具体需求是:A表,字段 a1 , a2 , a3 , a4
数据 01 , 2 , 地方 , 10
01 , 2 , 地段 , 20
02 , 2 , 地段 , 20
03 , 3 , 地的 , 30
希望结果: ‘分类’ , 2 , 3
01 , 30 , 0
02 , 20 , 0
03 , 0 , 30
说明:按a1列分类,将 a2 进行行转成列 ,其中难点是A表中a2的值是不固定的。可能是如,2、3、4;3、4、5;2、3、7等
数据 01 , 2 , 地方 , 10
01 , 2 , 地段 , 20
02 , 2 , 地段 , 20
03 , 3 , 地的 , 30
希望结果: ‘分类’ , 2 , 3
01 , 30 , 0
02 , 20 , 0
03 , 0 , 30
说明:按a1列分类,将 a2 进行行转成列 ,其中难点是A表中a2的值是不固定的。可能是如,2、3、4;3、4、5;2、3、7等
with tb as(
select '01' a1,2 a2,'地方' a3,10 a4 from dual union all
select '01',2,'地段',20 from dual union all
select '02',2,'地段',20 from dual union all
select '03',3,'地的',30 from dual)--以上为提供数据
select a1,sum(decode(a2,2,a4,0)) "2",
sum(decode(a2,3,a4,0)) "3"
from tb
group by a1A1 2 3
-- ---------- ----------
01 30 0
02 20 0
03 0 30