Sql 分别求正值和负值之和

Sql 分别求正值和负值之和,sql,Sql,我有一张桌子: NAME MONEY Jane 100 Chris -100 Jane 50 Ann -10 Jane -25 Ann 17 我想写一个求和数据的查询,在一列中应该只有正值,在另一列中应该只有负值。输出应如下所示: NAME SUM_POSITIVE SUM_NEGATIVE Jane 150 -25 Chris 0 -100 Ann

我有一张桌子:

NAME    MONEY
Jane    100  
Chris  -100  
Jane     50  
Ann     -10  
Jane    -25  
Ann      17
我想写一个求和数据的查询,在一列中应该只有正值,在另一列中应该只有负值。输出应如下所示:

NAME    SUM_POSITIVE    SUM_NEGATIVE
Jane    150             -25
Chris   0               -100
Ann     17              -10
查询:

select name, sum(money) from TABLE where money>0 group by name
union 
select name, sum(money) from TABLE where money<0 group by name;
请帮助我重写查询以更正输出。

您可以改为执行条件聚合:

select name, 
       sum(case when money > 0 then money end) as SUM_POSITIVE,
       sum(case when money < 0 then money end) as SUM_NEGATIVE 
from TABLE
group by name;
选择名称,
sum(如果money>0,则money end)为sum_正数,
sum(当money<0时,则money end)为sum_负值
从桌子上
按名称分组;
您可以改为执行条件聚合:

select name, 
       sum(case when money > 0 then money end) as SUM_POSITIVE,
       sum(case when money < 0 then money end) as SUM_NEGATIVE 
from TABLE
group by name;
选择名称,
sum(如果money>0,则money end)为sum_正数,
sum(当money<0时,则money end)为sum_负值
从桌子上
按名称分组;

 select name, sum(case when money>0 then money end) SUM_POSITIVE
,sum(case when money<0 then money end) SUM_NEGATIVE
from TABLE  group by name
选择名称、金额(金额大于0的情况下,则金额结束)金额为正
,sum(钱的情况下使用情况下

 select name, sum(case when money>0 then money end) SUM_POSITIVE
,sum(case when money<0 then money end) SUM_NEGATIVE
from TABLE  group by name
选择名称、金额(金额大于0的情况下,则金额结束)金额为正
,sum(如果是钱的话)