示例表和更新行的Tsql列比较

示例表和更新行的Tsql列比较,tsql,stored-procedures,if-statement,sql-update,Tsql,Stored Procedures,If Statement,Sql Update,我试图比较表1中的两列,并更新同一表1中的行 样本表 表1 A、B、C、D列 A B C D ------- X 1 X 0 X 2 X 0 X 3 Y 0 Y 4 X 0 如果A列和C列不同,那么我需要将2与B列的值相乘,并在同一个表中的D列中更新 所需输出 A B C D ------- X 1 X 1 X 2 X 2 X 3 Y 6 Y 4 X 8 有人能帮我解决这个问题吗?试试这个 UPDATE Table1 SET ColumnD = CASE WHEN ColumnA!=Co

我试图比较表1中的两列,并更新同一表1中的行

样本表

表1 A、B、C、D列

A B C D
-------
X 1 X 0
X 2 X 0 
X 3 Y 0
Y 4 X 0
如果A列和C列不同,那么我需要将2与B列的值相乘,并在同一个表中的D列中更新

所需输出

A B C D
-------
X 1 X 1
X 2 X 2 
X 3 Y 6
Y 4 X 8
有人能帮我解决这个问题吗?

试试这个

UPDATE Table1
SET ColumnD = CASE WHEN ColumnA!=ColumnC THEN ColumnB*2 ELSE ColumnD END

为什么最后一行的期望输出为8?A和C都是一样的。我现在已经更新了。最后一行的A列和C列不同是
A
列和/或
C
列可以为空?如果是这样的话,应该如何处理空值?谢谢,它起作用了。我尝试了下面的更新表1设置D=CASE,当A=C,然后B ELSE 3*B end,然后将帖子中的任何一个标记为答案来解决这个问题