2016-04-12 30 views
1

複数の 'count case when'文があります。すべての結果に結果を表示したくありません。SQL - 'count case'文が0を返す場合、結果を表示しません

ソース記述が4つのカウントステートメントすべてでnullを返す場合、ソース記述行を表示したくありません。私はこれを達成できるかどうかはわかりこだわっているといない

何かアドバイスをいただければ幸いです

ここ

は、あなたがあなたのwhere句内の述語のそれぞれが含まれるだけでした私のSQL

SELECT CASE WHEN CHARINDEX('**-**', SourceDescription) > 0 then 
SourceDescription 
WHEN CHARINDEX('-', SourceDescription) > 0 THEN 
LEFT(SourceDescription, CHARINDEX('-', SourceDescription)-1) else 
SourceDescription END as 'Source', 

count(case when StartDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) THEN 1 ELSE NULL END) as 'Total', 
count (case when CompletionDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) THEN 1 ELSE NULL END)as 'Completed', 
count (case when ClosedDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) and CompletionDate is null then 1 ELSE null END)as 'Closed', 
count (case when ExchangeDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0)then 1 else NULL END)as 'Exchanged' 

from 
CASE_record with (nolock) 
inner join case_warehouse with (nolock) on CASE_record.casekey = case_warehouse.casekey 
WHERE TypeCode = 'b' 

group by CASE WHEN CHARINDEX('**-**', SourceDescription) > 0 then 
SourceDescription 
WHEN CHARINDEX('-',SourceDescription) > 0 THEN 
LEFT(SourceDescription, CHARINDEX('-', SourceDescription)-1) else 
SourceDescription END 
+1

少なくとも1つの基準に一致するレコードのみを返すようにしてください。 – jarlh

答えて

1

です

WHERE TypeCode = 'b' 
AND ( StartDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) 
    OR CompletionDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) 
    OR (ClosedDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) AND CompletionDate IS NULL) 
    OR ExchangeDate = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 1, 0) 
    ) 
関連する問題