2017-08-31 50 views
2

我在T-SQL(SQL服务器2016),看起来像下面的表格:SQL条件乘法

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中怎么能做到这一点?

谢谢。

回答

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 
+0

打我吧... – Eli

+0

LOL。愤怒的手指;)JK –

2

假设Flag只值01

update ThyTable 
    set Col1 = Col1 * (1 - Flag), Col2 = Col2 * Flag, Col3 = Col3 * Flag