2017-08-31 61 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