Reputation: 1921
I'm trying to get values in variables based on condition as below,
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
no success. how can i do this?
Note: here COLUMN_1
is UNIQUE
Upvotes: 0
Views: 13
Reputation: 9042
TheCASE..WHEN
structure should return with a scalar value, not with a resultset. SELECT
statement returns a resultset. (The SELECT @HP = COLUMN_CD
parts)
You have to assign the values to the variables individually like this:
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
OR if you do not want to preserve the original value of the variables, you can replace the @HP
and @PP
in the ELSE
part to 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
Upvotes: 1