oracle行转列、列转行函数在日常工作中起着至关重要的作用,现在把应用方法总结如下:
参考博客为:https://www.cnblogs.com/waynelo/p/9869020.html
pivot函数:行转列函数:
语法:pivot(任一聚合函数 for 需转列的值所在列名 in (需转为列名的值));
unpivot函数:列转行函数:
语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名));
对于原始数据的情况如下:
行专列函数为:
select * from study_0410
pivot (sum(amount) for month_ in ('1' as m1,'2'as m2 ,'3' as m3,'4' as m4));
转换结果如下:
对于上述结果,建表存在study_041002表中,再进行列转行,代码如下:
select res1.years, substr(res1.bb,2,1) as month_ , res1.aa as amuount from
(select *
from study_041002
unpivot ( aa for bb in(m1,m2,m3,m4))) res1;
查询结果如下: