sqlserver的Case When 汇总且行转列

create table ta
(name varchar(30) not null,
qty int not null,
cls varchar(2) not null
)
select * from ta
insert into ta values('电脑',20,'进')
insert into ta values('电脑',20,'进')
insert into ta values('电脑',15,'出')
insert into ta values('书桌',10,'进')
insert into ta values('书桌',15,'进')
insert into ta values('书桌',20,'出')
insert into ta values('书桌',5,'出')

select * from ta
--行转列
select a.name,a.cnt,b.cnt,a.cnt-b.cnt from
(select name,cls,sum(qty) cnt from ta group by name,cls having cls='进') a
left join ( select name,cls,sum(qty) cnt from ta group by name,cls having cls='出') b
on a.name=b.name

posted on 2022-09-13 21:01  洞幺人生  阅读(94)  评论(0编辑  收藏  举报