Sql 按照某一列的值进行拆分后并列显示,求SQL最简单的写法实现?

0
数据源SQL:
select '1a' as aa,1 as sort,12 as num  union all
select '2a' as aa,1 as sort,12 as num  union all
select '1a' as bb,2 as sort,5 as num  union all
select '2a' as bb,2 as sort,0 as num union all
select '1a' as aa,3 as sort,12 as num  union all
select '2a' as aa,3 as sort,12 as num  union all
select '1a' as bb,4 as sort,5 as num  union all
select '2a' as bb,4 as sort,0 as num
数据显示为:

jjjjjj.JPG

需要实现下面的展示效果:

ttttttt.JPG

 
即按照sort分为1,2,3,4四部分后并列显示出来,求最简单的SQL写法,最好也适用于Sort值很多的情况,在此多谢!!!!
已邀请:
1

- 取是能力,舍是境界 2016-09-20 回答

with tmp as
(
select '1a' as aa,1 as sort,12 as num union all
select '2a' as aa,1 as sort,12 as num union all
select '1a' as bb,2 as sort,5 as num union all
select '2a' as bb,2 as sort,0 as num union all
select '1a' as aa,3 as sort,12 as num union all
select '2a' as aa,3 as sort,12 as num union all
select '1a' as bb,4 as sort,5 as num union all
select '2a' as bb,4 as sort,0 as num
)
select aa,max(case when sort = 1 then sort else null end) sort, sum(case when sort = 1 then num else null end) num,max(case when sort = 2 then sort else null end) sort1, sum(case when sort = 2 then num else null end) num1
from tmp
group by aa
类似于这样的,你这还不属于行变列。

要回复问题请先登录注册