SQL INSERT (select) en utilisant CASE basé sur une autre valeur de colonnes

J'ai un triggersur d'alarme, et si ce triggersur d'alarme = 1, je veux que la valeur d'une autre colonne soit NULL. Par exemple, je vais créer un tableau simple de ce que j'essaie d'expliquer.

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 

Vous ne terminez pas correctement vos déclarations de cas. En outre, les parenthèses sont inutiles et empêchent plusieurs valeurs d'être transmises. Voici votre exemple de code modifié:

 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