SQLで返された一連の結果を取得する方法を理解しようとしています。同じ日に結果が含まれていない結果を見つける方法
値として「合格」または「失敗」のいずれかを持つ「ステータス」という列があります。同じテーブル内に「Date_Entered」の列があります
同じ日に「合格」がない「失敗」日をすべて返すクエリが必要です。
例:私の結果セットで
01/01/2017 - Failed
01/01/2017 - Failed
01/01/2017 - Failed
01/01/2017 - Passed
01/02/2017 - Failed
01/02/2017 - Failed
01/03/2017 - Passed
は、私は第一と第三は、「合格」の結果を持っているので、2017年1月2日に両方のエントリを見てみたいです。ここで
は私の最も最近の試みです:
select COUNT(*)
, CAST(h.Status AS VARCHAR) status
, CAST(h.Location AS VARCHAR) location
, CAST(h.Date_Entered AS DATE)
from de_Hgb h
where 1=1
and h.Date_Entered between '01/01/2017' and '01/31/2017 23:59:59'
and h.status not in (SELECT CAST(g.Status AS VARCHAR) status FROM de_Hgb g WHERE 1=1 and g.Status <> 'Passed' AND g.Date_Entered = h.Date_Entered)
GROUP BY h.date_entered, h.Status, h.location
はしかし、これは私が何をしたいの逆数を返しています。これは私に第1と第3のためのエントリーを示しています。第2のものではありません。
この文の欠陥を確認することはできますか?SELECT 3 BETWEEN 5 AND 4; – Strawberry