【发布时间】:2018-05-02 03:38:33
【问题描述】:
我正在尝试使用 case when 和 DATEDIFF 函数执行以下 where 语句。但我收到语法错误。请帮帮我。
WHERE
-- primary contract is Flowing
CTS.ContractStatusIdentifier = 'FLW'
AND (CASE
WHEN VMO.ProvinceOrStateCode = 'ON'
THEN DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 75
ELSE DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 45)
AND VMO.ProvinceOrStateCode IN ('ON','AB')
【问题讨论】:
-
两个问题:首先,
CASE需要由缺少的END终止。其次,T-SQL 中的CASE是一个返回单个原子值的表达式 - 您不能有选择地执行一个或另一个代码块,您需要返回 a值(如数字或字符串) - 不是代码块
标签: sql-server where-clause datediff case-when