where子句中的case在SQL Server 2012中给出了语法错误

时间:2014-08-23 02:07:36

标签: sql-server-2012

我正在报告方面,当选择开始日期和结束日期时,报告应显示日期范围之间的数据,如果未选择日期,则报告应显示表格中的所有记录。

以下SQL在1 = 1时给出语法错误:

select  a.PURCH_DOC_DATE from PURCH_SCHED_LINE_FACT a 
 where  
 (case when a.CLIENT_ID='0050' then a.PURCH_DOC_DATE 
       when a.CLIENT_ID='0057' then a.STATS_DELIV_DATE
       else 1=1
end)
between  '01-01-2014' and '12.12.2014'

1 个答案:

答案 0 :(得分:0)

case不能像这样工作。尝试改为

select  a.PURCH_DOC_DATE from PURCH_SCHED_LINE_FACT a 
where (a.CLIENT_ID='0050' and a.PURCH_DOC_DATE between '2014-01-01' and '2014-12-12')
   or (a.CLIENT_ID='0057' and a.STATS_DELIV_DATE between '2014-01-01' and '2014-12-12')
   or a.CLIENT_ID not in ('0050','0057')