SQL INSERT (выбрать), используя CASE на основе значения другого столбца - PullRequest
4 голосов
/ 16 августа 2011

У меня есть триггер тревоги, и если этот триггер тревоги = 1, я хочу, чтобы значение другого столбца было NULL. Для примера я создам простую таблицу того, что я пытаюсь объяснить.

DECLARE @tmp TABLE ( ID INT, Value1 FLOAT, V1_Alarm BIT, Value2 FLOAT, V2_Alarm BIT)
INSERT INTO @tmp
SELECT (
ID,
CASE WHEN V1_Alarm = 1 THEN NULL ELSE Value1,
V1_Alarm,
CASE WHEN V2_Alarm = 1 THEN NULL ELSE Value2
) FROM SomeTable

1 Ответ

7 голосов
/ 16 августа 2011

Вы неправильно завершаете свои заявления о кейсе.Кроме того, скобки не нужны и не позволяют передавать несколько значений.Вот ваш пример кода изменен:

DECLARE @tmp TABLE ( ID INT, Value1 FLOAT, V1_Alarm BIT, Value2 FLOAT, V2_Alarm BIT)
INSERT INTO @tmp
SELECT  ID,
        CASE WHEN V1_Alarm = 1 THEN 
            NULL
        ELSE
            Value1
        END,
        V1_Alarm,
        CASE WHEN V2_Alarm = 1 THEN
            NULL
        ELSE
            Value2
        END
FROM    SomeTable    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...