2017-09-29 4 views
0

私はSQL Server Managment Studioを使用しています。私はDCIP値= Cなら正の整数ELSEとして "量"を扱い、負の整数として "量"を扱うというCASE条件を使って "Amount"列をSUMにしようとしています。正味金額としてエンドSUM値は、別の列のテキスト値に基づいてPOSまたはNEGとして扱います。

DCIP Amount Name 
----------------------- 
C 100 Jack 
C 100 Jack 
D 300 Freddie 
D 50 Jack 
D 25 Freddie 
C 100 Freddie 

私は以下の結果を返す必要があります名前でグループ化しています:

select 
Amount * 
CASE DCIP 
    WHEN 'D' THEN 1 
    ELSE -1 
END 
from table 

して、合計を取る:私はあなたがしたいと思います

Net Amount Name 
--------------- 
-150  Jack 
225.  Freddie 

答えて

0

条件付き集計を使用

SELECT NAME, 
     Net_Amount = Sum(CASE DCIP WHEN 'D' THEN Amount ELSE -Amount END) 
FROM table 
GROUP BY NAME 
1

をユーザによるこのようなexpresionグループの

select 
sum(Amount * 
CASE DCIP 
    WHEN 'D' THEN 1 
    ELSE -1 
END) 
from table 
group by name 
+0

はい、条件付き集計。あなたはあなたのタイプミスを修正することができます、 '私はあなたを薄くします' –

+0

これはうまくいきました。私は少しそれを微調整した。私は使い終わった:SELECT SUM(CASE Table.Amount WHERE 'D' then Table.Amount * 1 ELSE Table.Amount * -1 END AS Net_Amount GROUP BY名前 – RCLINE

関連する問題