1
我有一个查询,我一直在修补以用作报告的来源。 由于某些奇怪的原因,当我尝试将datepart(dw,GetDate())的输出与一个整数(周一为2)进行比较时,它给了我一个错误,告诉我不正确的语法。然后我开始研究为什么我无法比较iif声明中的两个整数,并且我发现绝对没有答案。 这里是完整的代码(我去来回如何做到这一点,这是本次迭代的尝试)将datepart的输出与整数进行比较的错误
DECLARE @dp integer,@d integer
set @dp =DATEpart(dw,GETDATE())
set @d = 2
SELECT TOP 100 PERCENT CUST_ORDER_LINE.PRODUCT_CODE
,CUSTOMER_ORDER.ID
,CUSTOMER_ORDER.CUSTOMER_ID
,CUST_ORDER_LINE.PART_ID
,CUST_ORDER_LINE.MISC_REFERENCE
,CUST_ORDER_LINE.COMMODITY_CODE
,CUSTOMER_ORDER.SALESREP_ID
,CUSTOMER_ORDER.TERRITORY
,CUST_ORDER_LINE.ORDER_QTY * CUST_ORDER_LINE.UNIT_PRICE AS Amount
,CUSTOMER_ORDER.ORDER_DATE
FROM CUST_ORDER_LINE
INNER JOIN CUSTOMER_ORDER ON CUST_ORDER_LINE.CUST_ORDER_ID = CUSTOMER_ORDER.ID
WHERE (
iif(@dp = @d,CUSTOMER_ORDER.ORDER_DATE BETWEEN (dateadd(day, datediff(day, 0, getdate()), 0) - 3) AND (dateadd(day, datediff(day, 0, getdate()),0))),
CUSTOMER_ORDER.ORDER_DATE BETWEEN (dateadd(day, datediff(day, 0, getdate()), 0) - 1)) AND (dateadd(day, datediff(day, 0, getdate()), + 1))))
)
ORDER BY CUSTOMER_ORDER.ORDER_DATE DESC
此查询的一点是,从昨天拉的数据,以及周五如果是周一。编号:错误代码消息170,级别15,状态1,行19 行19:'='附近语法错误。
'iif' not in 2008. https://docs.microsoft.com/en-us/sql/t-sql/functions/logical-functions-iif-transact-sql。 – SQLChao