我正在使用WHERE子句中包含CASE语句的查询,其中我必须将日期列与来自日期和toDate的两个变量(如果它不为空)进行比较。但是,SQL Server 2008在执行时会给出一些错误,例如“附近的语法错误>”。任何人都可以请帮助我正确的查询?下面是该查询:SQL Server 2008中的WHERE子句中的日期比较的CASE语句
declare
@fromDate varchar(32)= '2015-08-04',
@toDate varchar(32) = '2016-01-04'
SELECT
DC_MASTER.DC_NO,
PSR_LOAD_DATE_TIME,
CUS_NAME
FROM DC_ITEM
INNER JOIN DC_MASTER ON DC_MASTER.DC_NO=DC_ITEM.DC_NO
INNER JOIN ITEM_MASTER ON item_master.ITEM_CODE = DC_ITEM.ITEM_CODE
INNER JOIN CUSTOMER_MASTER ON customer_master.CUS_CODE = DC_MASTER.CUS_CODE
INNER JOIN LOCATION_MASTER ON location_master.LOC_CODE = DC_ITEM.LOC_CODE
WHERE DC_ITEM.ITEM_CODE=item_master.ITEM_CODE
AND CASE
WHEN @fromDate IS NOT NULL AND @toDate IS NOT NULL THEN DC_MASTER.PSR_LOAD_DATE_TIME >= @fromDate and PSR_LOAD_DATE_TIME <= @toDate
END
这是一个case表达式(返回一个值),而不是case语句(有条件的代码执行)。 – jarlh
你能否给我正确的使用方法。实际上,如果提供的话,我需要在这两个日期之间得到记录。 –