如果条件在sql server更新查询

我有一个sql服务器表,其中有2列,我想根据发送到存储过程的标志和新值更新其值,如下所示:
UPDATE
    table_Name

SET
    CASE
        WHEN @flag = '1' THEN column_A += @new_value
        WHEN @flag = '0' THEN column_B += @new_value
    END AS Total

WHERE
    ID = @ID

什么是正确的sql服务器代码呢?

解决方法

目前的答案是正确的,应该可以正常工作,但是更简单,更明显,更可维护的是什么问题:
IF @flag = 1
    UPDATE table_name SET column_A = column_A + @new_value WHERE ID = @ID;
ELSE
    UPDATE table_name SET column_B = column_B + @new_value WHERE ID = @ID;

这很容易阅读,虽然这是一个非常简单的查询.

这是一个工作示例,由@snyder提供:SqlFiddle.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...