我在SQL中有一个嵌套的case循环,我在2016年之前检查它的日期然后设置status = 3,否则根据当前状态更改状态。我在以下代码中收到错误
case
when x.myDate is not null and x.myDate < Convert(datetime, '2015-12-31') then x.myStatus = '3'
else
case
when x.myStatus = 1 then '2'
when x.myStatus = 3 then '1'
when x.myStatus = 2 then '3'
else ''
end
end
错误:&#39; =&#39;附近的语法不正确在第二行
请帮忙
答案 0 :(得分:0)
x.myStatus = '3'
声明CASE
中的这个Then
不能这样。 Then
仅允许有效的表达式。
表达式是SQL的符号和运算符的组合 服务器数据库引擎评估以获取单个数据值。简单表达式可以是单个常量,变量,列或标量函数。运算符可用于将两个或多个简单表达式连接到复杂表达式中。
这是正确的方法
SELECT myStatus = CASE
WHEN x.myDate IS NOT NULL
AND x.myDate < CONVERT(DATETIME, '2015-12-31') THEN '3'
ELSE
CASE x.myStatus
WHEN 1 THEN '2'
WHEN 3 THEN '1'
WHEN 2 THEN '3'
ELSE ''
END
END
答案 1 :(得分:0)
set x.myStatus =
case when x.myDate is not null and x.myDate < Convert(datetime, '2015-12-31') then '3'
when x.myStatus = 1 then '2'
when x.myStatus = 3 then '1'
when x.myStatus = 2 then '3'
else ''
end
答案 2 :(得分:0)
更改此行:
when x.myDate is not null and x.myDate < Convert(datetime, '2015-12-31') then x.myStatus = '3'
到此:
when x.myDate is not null and x.myDate < Convert(datetime, '2015-12-31') then '3'