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可能不一样。
如对本文有疑问, 点击进行留言回复!!
Oracle常用语句(时间格式、去重、去特殊符号、查询表空间等)
Navicate 如何导出数据库中的存储过程、事件、视图等?
每日一记:Oracle升级2020年4月份的数据库补丁Database Patch Set Update : 11.2.0.4.200414 (30670774)
Oracle 19.3 dataguard for Redhat 7.6
网友评论