数据库
首页 > 数据库> > oracle 行列转换函数

oracle 行列转换函数

作者:互联网

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;

查询结果如下:
在这里插入图片描述

标签:函数,列名,res1,行列,unpivot,oracle,pivot,select
来源: https://blog.csdn.net/chensq_yinhai/article/details/115584400