我有一个场景,我试图根据select语句中的条件从字段/列检索多个值。我试图使用Case语句,但问题是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
可能重复的[如何评估WHERE子句中的输入(http://stackoverflow.com/questions/11732423/how-to-evaluate-an-input-in-the-where-clause ) – LittleBobbyTables 2012-08-06 17:23:26
在查询中使用'GetDate()'追求一个移动的目标,影响性能,并可能产生好奇的结果,例如随着日期的变化。在变量中捕获当前日期/时间几乎总是一个更好的主意,然后根据需要使用该值。在存储过程中,这在多个语句中更重要。多次使用'GetDate()'的最常见原因是捕获长时间运行操作的开始和结束时间。 – HABO 2012-08-06 17:31:59
[CASE IN statement with multiple values]可能重复(http://stackoverflow.com/questions/7449509/case-in-statement-with-multiple-values) – mdb 2012-08-06 17:38:02