为什么此“ WHEN THEN” SQL查询未返回预期结果?

问题描述 投票:1回答:2

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

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

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
sql sql-server-2008 case-when
2个回答
1
投票

您正在设置变量之前进行选择。交换SETSELECT行:

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

0
投票

请在下面的查询中尝试解决您的问题。

DECLARE @wnum AS INT

SET @wnum = 49

DECLARE @wnum3 AS INT
DECLARE @wnum4 AS INT

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

SELECT @wnum3

SELECT @wnum4 = CASE 
        WHEN @wnum >= 50
            THEN 2
        WHEN @wnum < 50
            THEN @wnum + 4
        END
SELECT @wnum4
© www.soinside.com 2019 - 2024. All rights reserved.