0

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  
4

1 に答える 1

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
于 2012-08-06T17:25:59.080 に答える