【发布时间】:2014-05-13 02:07:11
【问题描述】:
我正在尝试在类似这样的 WHERE 子句中编写 CASE 语句。
我的问题是,最后我想说ELSE CalendarQuarter IN (@Q1,@Q2,@Q3,@Q4)。因此,如果这些条件都不满足,请执行其他操作。我不知道如何添加这个ELSE 语句。
AND CalendarQuarter in
(
/*March, June, Sep 2010 Metcard*/
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard'
AND DATEPART(mm,@year_end) IN (3,6,9) THEN @Q1 END),
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard'
AND DATEPART(mm,@year_end) IN (3,6) THEN @Q2 END),
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard'
AND DATEPART(mm,@year_end) IN (3) THEN @Q3 END),
/*March, June, Sep 2010 Metcard/Myki*/
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (9,6,3) THEN @Q4 END),
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (9,6) THEN @Q3 END),
(CASE WHEN DATEPART(yy,@year_end) = 2010
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (9) THEN @Q2 END),
/*March, June, Sep 2013 Metcard/Myki*/
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (3,6,9) THEN @Q1 END),
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (3,6) THEN @Q2 END),
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'metcard/myki'
AND DATEPART(mm,@year_end) IN (3) THEN @Q3 END),
/*March, June, Sep 2013 Myki*/
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'myki'
AND DATEPART(mm,@year_end) IN (9,6,3) THEN @Q4 END),
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'myki'
AND DATEPART(mm,@year_end) IN (9,6) THEN @Q3 END),
(CASE WHEN DATEPART(yy,@year_end) = 2013
AND @ticketing_system = 'myki'
AND DATEPART(mm,@year_end) IN (9) THEN @Q2 END),
/*ELSE....IN (@Q1,@Q2,@Q3,@Q4)*/
)
【问题讨论】:
标签: sql sql-server tsql case