我試圖在一年的時間段內對一個數據塊進行子集劃分。有兩個日期字段可用於子集。首先,我應該使用DATE1在我的where子句中使用。如果這是NULL,那麼我需要使用DATE2。如果兩者都是NULL,那麼顯然他們不符合條件。SQL條件WHERE子句CASE WHEN
注意:我不是SQL Server專家。我只是使用Ent。經理獲得一些查詢結果。我通常在SAS編程和很舒服TSQL,但我不知道這一切來與SQL Server 2008中
SELECT count(CASE WHEN msg_fmt = 'ABC' then 1 END) as GRP1_CNT,
count(CASE WHEN msg_fmt = 'LMN' then 1 END) as GRP2_CNT,
count(CASE WHEN msg_fmt = 'XYZ' then 1 END) as GRP3_CNT,
FROM msg_repository
WHERE (CASE WHEN DATE1 IS NOT NULL then
DATE1 between '2010-01-01' and '2011-01-01'
ELSE DATE2 between '2010-01-01' and '2011-01-01'
END)
GROUP BY msg_fmt
所以,如果DATE1不爲空的招數,使用日期。如果它是NULL,則使用DATE2。我寧願有一個只使用T-SQL的解決方案,因爲該解決方案也可以用於SAS。但是,我現在會採取任何措施。
感謝您的任何幫助。
是'DATE1'和類型的''DATE2' DATE','DATETIME',...?使用'> ='20100101'和<'20110101'比'BETWEEN'更安全。 –