2017-08-15 15 views
2

私は以下のSQL文を持っています。私がしようとしているのは、条件に基づいて2つの値を追加することです。だから、@IsUCMPresentが1であるならば、私は75 * 70しかし@IsEVMPresentも存在している場合、私は(* 70 75)を取得する必要があります+(* 8 75)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がtrueの場合、私の場合ということですうまく合計を取得するだけ@IsEVMPresent = 1が真であるならば、私はあなたがあなたのcase文にelse節を追加する必要があります75 * 8

+0

あなたはどんな問題がありますか? –

+0

何も返されません – user1221989

+0

IsUCMPresent = 0でもIsEVMPresent = 1の場合はどうなりますか? –

答えて

2

を得ることはありません:

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を返し、何も行いません。

関連する問題