sql-server - SQL Server - 带有 DATEDIFF 函数的 WHERE 子句中的 CASE WHEN
问题描述
我正在尝试使用 case when 和DATEDIFF
function 执行下面的 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')
解决方案
显然WHERE
子句语法
AND (CASE
WHEN VMO.ProvinceOrStateCode = 'ON'
THEN DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 75
ELSE DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 45)
是无效的。为了简单,很简单,请尝试
AND DATEDIFF (dd, CTR.RenewalDate, @currentdate)
>= (CASE
WHEN VMO.ProvinceOrStateCode = 'ON'
THEN 75
ELSE 45
END)
祝你好运
推荐阅读
- python-2.7 - Python npyscreen:如何从按钮按下启动表单?
- jquery - 点击链接后关闭手机版菜单
- asp.net - Web api 操作过滤器中设置的 CallContext 值不会流向控制器操作
- angular - Angular 6如何提高初始加载页面的速度
- python - 如何使用随机模块获得更好的结果
- html - 无法在 Ionic 中为数组获取正确的索引
- python-3.x - 使用 matplotlib 堆积条形图
- imagemagick - ImageMagic 给出'委托失败''ufraw-batch''
- ip - IP 标头校验和是错误检测的完整证明方法吗?
- validation - 用于数据验证的 HTTP POST 中的 HTTP 状态代码和响应正文