查询:sql server更新中的if条件

查询:sql server更新中的if条件,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个SQL server表,其中有两列,我希望根据与新值一起发送到存储过程的标志来更新它们的值,例如: 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 server

我有一个SQL server表,其中有两列,我希望根据与新值一起发送到存储过程的标志来更新它们的值,例如:

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 server代码来执行此操作???

我认为M.Ali的评论是正确的,因此我根据他的建议构建了此代码。 我还假设状态字段是“已批准”或“已拒绝”,如您所说,取决于它是否已填充。如果状态字段上有任何其他条件,当然您必须将这些条件添加到where语句中

BEGIN TRANSACTION

Update Payment
set post_date = new_postdate_value
account_num = new_account_num_value
pay_am = new_pay_am_value
pay_type = new_pay_type_value
authoriz = new_authoriz_value
where status is not null

UPDATE Payment
SET account_num = new_account_num_value
WHERE status is null

COMMIT TRANSACTION

您最好在两个单独的更新中执行此操作,但在一个事务中执行此操作,否则在一个语句中执行此操作将导致案例语句和一些不必要的更新。@M.Ali感谢您的回复!你能举例说明你所说的一笔交易是什么意思吗?