我在T-SQL(SQL Server 2016)中有一个表,如下所示:
Flag Col 1 Col 2 Col 3
----------- --------- ------- -------
0 33.1 3.9 5.5
1 20.5 8.1 4.3
0 15.3 8.33 1.1
1 12.1 8.4 9.2
这只是一个示例。但是,我想要做的是更新这些列,如果flag = 0,则col 1保持不变,但col 2和col 3 = 0.如果flag = 1,则col 1 = 0,col 2和col 3保持不变,依此类推。
如何在SQL Server中实现这一目标?
感谢。
答案 0 :(得分:4)
UPDATE my_table SET
[Col 1] = CASE WHEN [Flag] = 0 THEN [Col 1] ELSE 0 END,
[Col 2] = CASE WHEN [Flag] = 1 THEN [Col 2] ELSE 0 END ,
[Col 3] = CASE WHEN [Flag] = 1 THEN [Col 3] ELSE 0 END
答案 1 :(得分:2)
假设Flag
只有值0
或1
:
update ThyTable
set Col1 = Col1 * ( 1 - Flag ), Col2 = Col2 * Flag, Col3 = Col3 * Flag