查询:sql server更新中的if条件
我有一个SQL server表,其中有两列,我希望根据与新值一起发送到存储过程的标志来更新它们的值,例如:查询: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
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感谢您的回复!你能举例说明你所说的一笔交易是什么意思吗?