2016-10-18 2 views
1

を得る:は、私は、例えば、以下のレコードを持つデータビューをしたSQL行を結合し、値

Num Type Name  
------------------------ 
17 2  Luke  
22 1  Luke  
22 2  Sandy 
10 1  Sandy 
19 2  Tom 
19 1  Tom 

はどのようにして、たとえばサンディのためのすべての行を組み合わせて、のNum行の合計を得ることができますか?しかし、演算子としてタイプが得られるはずです(1 =プラス、2 =マイナス)。だから、サンディのために、それは10-22 =合計となり-12

resulttableは次のようになります。

Num Type Name  
------------------------ 
4  null Luke  
-12 null Sandy 
0  null Tom 

を純粋なSQLであっても可能ですか?あなたの助け

答えて

4

ため

Thxをはい、これは可能です:

select name, 
     sum(case when type = 1 then num 
       when type = 2 
       then - num 
      end) as num 
from t 
group by name; 

それは便利いないようですので、私は、クエリからtypeを残しています。

+0

thx **ケースの場合は...その後**、私は完全にそれを逃した。あなたの答えを解決策として受け入れる – G43beli

2
SELECT 
     SUM( CASE WHEN Type = 1 THEN Num 
        WHEN Type = 2 THEN -Num 
       END 
      ) AS Num, 
     NULL AS Type, 
     Name, 
FROM Dataview 
GROUP BY Name; 
関連する問題