首页 > 解决方案 > 为什么这个“WHEN THEN”SQL 查询没有返回预期结果?

问题描述

有人可以解释为什么这个查询会NULL作为结果出现,但是我设置了@wnum 变量?我已经尝试了我能想到的所有可能和不同的运算符/命令。

结果应该是@wnum3=52,@wnum4=53 如果@wnum=49 或@wnum3=1,@wnum4=2 如果@wnum=50

DECLARE @wnum AS int SET @wnum = 49
DECLARE @wnum3 AS int
DECLARE @wnum4 AS int

SELECT @wnum3
SET @wnum3 = CASE WHEN @wnum >=50 THEN 1 WHEN @wnum <50 THEN @wnum+3 
END

SELECT@wnum4
SET @wnum4 = CASE WHEN @wnum >=50 THEN 2 WHEN @wnum <50 THEN @wnum+4 
END

标签: sqltsqlsql-server-2008case-when

解决方案


您在设置变量之前进行选择。交换SET&SELECT周围的线:

DECLARE @wnum AS int SET @wnum = 49
DECLARE @wnum3 AS int
DECLARE @wnum4 AS int

SET @wnum3 = CASE WHEN @wnum >=50 THEN 1 WHEN @wnum <50 THEN @wnum+3 END
SELECT @wnum3

SET @wnum4 = CASE WHEN @wnum >=50 THEN 2 WHEN @wnum <50 THEN @wnum+4 END
SELECT @wnum4

推荐阅读