我有一个场景,我试图根据select语句中的条件从字段/列中检索多个值。我试图使用Case语句,但问题是Case语句不支持字段/列中的多个值。是否有任何方法可以通过这种方式或任何其他方式实现这一目标?
SELECT col1, col2, col3, Period
FROM tblMonthlyCost
WHERE Period = CASE
WHEN Datepart(MONTH, Getdate()) = 8
AND Datediff(DAY, '07/31/2012', Getdate()) <= 3 THEN Period IN
('0112','0212','0312','0412','0512','0612')
WHEN Datepart(MONTH, Getdate()) = 8
AND Datediff(DAY, '07/31/2012', Getdate()) > 3 THEN Period IN
('0112','0212','0312','0412','0512','0612','0712')
END
答案 0 :(得分:2)
为什么不这样做?
SELECT col1,
col2,
col3,
Period
FROM tblMonthlyCost
WHERE Period IN ( '0112', '0212', '0312', '0412', '0512', '0612' )
AND DATEPART(MONTH, GETDATE()) = 8
AND DATEDIFF(DAY, '07/31/2012', GETDATE()) <= 3
OR Period IN ( '0112', '0212', '0312', '0412', '0512', '0612', '0712' )
AND DATEPART(MONTH, GETDATE()) = 8
AND DATEDIFF(DAY, '07/31/2012', GETDATE()) > 3