accname amount
------------------------------ ----------------------
wlzf2 -1011
成都花花凉菜公司 -421
五粮液股份有限公司 -999
lwzf1 24
wlzf2 900
成都花花凉菜公司 22
五粮液股份有限公司 888实际值是这个样子的
但是我需要的是-------------------------
accname 正 付
wlzf2 900 -1011
成都花花凉菜公司 22 -421
五粮液股份有限公司 888 -999
lwzf1 24 0或者null
------------------------------ ----------------------
wlzf2 -1011
成都花花凉菜公司 -421
五粮液股份有限公司 -999
lwzf1 24
wlzf2 900
成都花花凉菜公司 22
五粮液股份有限公司 888实际值是这个样子的
但是我需要的是-------------------------
accname 正 付
wlzf2 900 -1011
成都花花凉菜公司 22 -421
五粮液股份有限公司 888 -999
lwzf1 24 0或者null
max((case when amount > 0 then amount end)) 正 ,
max((case when amount <= 0 then amount end)) 负
from tb
group by accname
insert into tb values('wlzf2' , -1011)
insert into tb values('成都花花凉菜公司' , -421)
insert into tb values('五粮液股份有限公司', -999)
insert into tb values('lwzf1' , 24)
insert into tb values('wlzf2' , 900)
insert into tb values('成都花花凉菜公司' , 22)
insert into tb values('五粮液股份有限公司', 888)
goselect accname ,
sum((case when amount > 0 then amount else 0 end)) 正 ,
sum((case when amount <= 0 then amount else 0 end)) 负
from tb
group by accnamedrop table tb/*
accname 正 负
-------------------------------------------------- ----------- -----------
lwzf1 24 0
wlzf2 900 -1011
成都花花凉菜公司 22 -421
五粮液股份有限公司 888 -999(所影响的行数为 4 行)
*/
------------------------------ ----------------------
insert into tb select 'wlzf2', -1011
insert into tb select '成都花花凉菜公司', -421
insert into tb select '五粮液股份有限公司', -999
insert into tb select 'lwzf1', 24
insert into tb select 'wlzf2', 900
insert into tb select '成都花花凉菜公司', 22
insert into tb select '五粮液股份有限公司', 888
go
select accname,
sum(case when amount>=0 then amount else 0 end)正,
sum(case when amount<0 then amount else 0 end)负
from tb group by accname
/*
accname 正 负
------------------------------ ----------- -----------
lwzf1 24 0
wlzf2 900 -1011
成都花花凉菜公司 22 -421
五粮液股份有限公司 888 -999(4 行受影响)*/
go
drop table tb