Oracle11以后,行列转换有了新的方法。
下面的是已经疏通过的代码,请放心使用。。。
With AA as (
Select A,B,C,row_number() over (partition by B order by b) D from (
Select 10 A, 11 B, 12 C from dual
union
select 20,11,22 from dual
union
select 30 , 21 , 32 from dual )
)
Select * from AA pivot (Max(A) , Max(C) for B in (11,21))
备注
B字段想定的是日期,如果需要动态列的话,可以把Max项起别名,那样就能实现动态列了。
注意
如果不是全字段进行行列转换的时候,不需要加row_number,
如果加上的话,会造成一些数据没有被变到列上,因为相同项的row_number可能不一样。