Sql server SQL Server-在带有DATEDIFF函数的WHERE子句中的情况
我试图使用case-when和Sql server SQL Server-在带有DATEDIFF函数的WHERE子句中的情况,sql-server,where-clause,datediff,case-when,Sql Server,Where Clause,Datediff,Case When,我试图使用case-when和DATEDIFF函数执行下面的where语句。但是我有语法错误。请帮帮我 WHERE -- primary contract is Flowing CTS.ContractStatusIdentifier = 'FLW' AND (CASE WHEN VMO.ProvinceOrStateCode = 'ON'
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')
显然,
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)
祝你好运选择[supp_call_tckt_num],UPPER([assigned_to])作为assigned_to 分配的\u日期、关闭\u日期、diffday=关闭\u日期为空时的情况 datediff(d,分配的_日期,getdate())else datediff(d,分配日期,结束日期)结束 上限([调用源])作为调用源 上级([科目类型])作为科目类型,[mdn] 上级([状态])作为状态,上级([公司名称])作为公司名称 UPPER([rep_id])作为rep_id,UPPER([caller_first_name])作为caller_first_name 上限([呼叫者姓氏])作为呼叫者姓氏[账号] 上层([网络])作为网络,上层([发行类型])作为发行类型 上层([问题])作为问题,上层([子类型])作为子类型,上层([问题描述]) 作为prob_desc_res,UPPER([注释])作为注释,[票号]来自 [ewts_tracker]带有(NOLOCK),其中[ewts_tracker]。[升级]= “是”和
datediff(d,isnull(assigned_date,getdate()),close_date)>='3'两个问题:首先,
案例
需要由缺少的结束
终止。其次,T-SQL中的CASE是一个返回单个原子值的表达式—您不能有选择地执行一个或另一个代码块,您需要返回一个值(如数字或字符串)—而不是代码块