Sql server 2012 where子句中的大小写给出SQL Server 2012中的语法错误
我在报告端工作,当选择开始日期和结束日期时,报告应显示日期范围之间的数据,如果未选择日期,则报告应显示表中的所有记录 下面的SQL给出了1=1时的语法错误:Sql server 2012 where子句中的大小写给出SQL Server 2012中的语法错误,sql-server-2012,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_DAT
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'
案例
不是这样工作的。试试看
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')
您能否提供更多有关所得到错误的信息?
CASE
是一个只返回一个数据类型优先级最高的值的表达式。您不能将其用于流量控制或直接转储到ELSE 1=1
。。。我建议在混合使用和
以及或
时,使用括号分隔不同的相关谓词集。您可能很清楚运算符优先级在这里是如何工作的,但对于95%以上的读者来说可能不太清楚。。。