在CASE语句中处理多个值?

时间:2012-08-06 17:20:49

标签: tsql

我有一个场景,我试图根据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  

1 个答案:

答案 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