sql有条件地获取变量中的值

时间:2014-09-11 14:28:23

标签: sql-server-2008-r2

我试图根据条件获取变量值,如下所示,

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_1UNIQUE

1 个答案:

答案 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部分中的@PPELSE替换为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