繁体   English   中英

SQL INSERT(选择)使用基于另一列值的 CASE

[英]SQL INSERT (select) using CASE based on another columns value

我有一个警报触发器,如果该警报触发器 = 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

你没有正确地结束你的案例陈述。 此外,括号是不必要的,可以防止传递多个值。 这是您修改的示例代码:

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    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM