2017-08-15 97 views
2

我有下面的SQL語句。我想要做的是根據條件添加兩個值。所以,如果@IsUCMPresent是1,那麼我應該得到75 * 70,但如果@IsEVMPresent也存在我應該得到(75 * 70)+(75 * 8)更新SQL Server中的表數據

SET @IsEVMPresent = 1 
    SET @IsUCMPresent = 1 

    UPDATE #MainData 
    SET OneTimeExpense = (CASE WHEN @IsUCMPresent = 1 THEN 75 * 70 END) + 
         (CASE WHEN @IsEVMPresent = 1 THEN 75 * 8 END) 
    WHERE ItemId = 'ECS' OR ItemId = 'UCM' 

的問題是,如果@IsUCMPresent = 1是真的,那麼我得到的總和得很好,但如果只@IsEVMPresent = 1是真的,那麼我不明白75 * 8

+0

你有什麼問題? –

+0

它沒有返回任何東西 – user1221989

+0

如果IsUCMPresent = 0但是IsEVMPresent = 1,那麼怎麼辦? –

回答

2

你需要一個else子句添加到您的case語句:

UPDATE #MainData 
    SET 
    OneTimeExpense = (Case When @IsUCMPresent = 1 Then 75 * 70 Else 0 End) + 
         (Case When @IsEVMPresent = 1 Then 75 * 8 Else 0 End) 
Where ItemId IN('ECS','UCM') 

沒有他們,這將返回null, Sql不能添加數字並且爲null。

+0

這正是我正在尋找..謝謝非常 – user1221989

2

在這兩種情況下,你應該指定ELSE 0,否則CASE會給你NULL並且什麼也不做。