我试图根据条件获取变量值,如下所示,
DECLARE @HP INT,@PP INT;
SELECT CASE COLUMN_1
WHEN 'VAL1' THEN SELECT @HP = COLUMN_CD
WHEN 'VAL2' THEN SELECT @PP = COLUMN_CD
END
FROM TBL
没有成功。我怎样才能做到这一点?
注意:此处COLUMN_1
为UNIQUE
答案 0 :(得分:1)
CASE..WHEN
结构应返回标量值,而不是结果集。 SELECT
语句返回结果集。 (SELECT @HP = COLUMN_CD
部分)
您必须将这些值分别分配给变量:
DECLARE @HP INT,@PP INT;
SELECT
@HP = CASE WHEN COLUMN_1 = 'VAL1' THEN COLUMN_CD ELSE @HP END
, @PP = CASE WHEN COLUMN_1 = 'VAL2' THEN COLUMN_CD ELSE @PP END
FROM
TBL
如果您不想保留变量的原始值,可以将@HP
部分中的@PP
和ELSE
替换为NULL
:
DECLARE @HP INT,@PP INT;
SELECT
@HP = CASE WHEN COLUMN_1 = 'VAL1' THEN COLUMN_CD ELSE NULL END
, @PP = CASE WHEN COLUMN_1 = 'VAL2' THEN COLUMN_CD ELSE NULL END
FROM
TBL