2017-03-16 61 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

很明显,你必须组,并使用像'SUM(CASE当n> 0,则n ELSE 0 END)AS TotalPositive'等等...:您可以使用CASE做有条件聚集 – Selvin

回答

1

您想通过M而不是N进行分组。由M

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;