2017-03-16 8 views
-1

私はSQLiteのを使ってAndroidのスタジオでプロジェクトを作ってるんだと私は問題、私は次のような表を持って複雑なグループ化SQLiteのクエリ

を持っていた:

M N 
1 100 
1 -50 
1 10 
1 -20 
2 100 
2 -15 
3 40 

私に次のようになりますどのようなクエリ結果:

M Total TotalPositive TotalNegative 
1 40  110    -70 
2 85  100    -15 
3 40  40    0 

私は次のクエリを書いてきました:

SELECT M, SUM(N) AS 'Total' FROM tablename GROUP BY N; 

私はMとTotalパーツしか手に入れることができず、正と負の値の和をどのように得ることができるのか分かりません。それで私を助けてくれますか?

ありがとうございます。

+0

あなたはMでグループに持っているようにTotalPositive'とAS 'SUM(CASE N> 0 THEN N ELSE 0 END)のようなものを使用して... – Selvin

答えて

1

Nの代わりにMをグループ化するとします。あなたは条件付きの集約を行うためにCASEを使用することができます。

明らか
select 
    M, 
    sum(N) total_sum, 
    sum(case when N > 0 then N else 0 end) total_positive, 
    sum(case when N < 0 then N else 0 end) total_negative 
from your_table 
group by M;