300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > unpivot行转列 oracle Oracle列转行_unpivot

unpivot行转列 oracle Oracle列转行_unpivot

时间:2020-09-28 04:41:47

相关推荐

unpivot行转列 oracle Oracle列转行_unpivot

Oracle列转行_unpivot

在实际业务开发环境中,我们经常会遇到要对查询的数据集进行列转行的需求。那么Oracle是如何实现的呢?本文也将通过几个实例来详细讲解一下。

Oracle列转行

Oracle列转行就是把一行当中的列的字段按照行的唯一值转换成多行数据。 比如上文Oracle行转列中的学生成绩表的基础数据是一个学生的一个科目成绩对应着是一条记录。然后我们进行了行转列后变成一个学生对应着每列(数学、英语、语文)科目的成绩是一条记录。那么本文就是要把之前转换后的学生成绩表(备份表score_copy)再次进行列转行,转换为原始数据。案例数据如下:

那我们要如何实现列转行呢?下面介绍两种常用的方法:

1、利用union all 进行拼接,可以完美的把对应的列转为行记录,具体代码如下:selectt.stuname,'英语'ascoursename,t.英语asscorefromSCORE_COPYt

unionall

selectt.stuname,'数学'ascoursename,t.数学asscorefromSCORE_COPYt

unionall

selectt.stuname,'语文'ascoursename,t.语文asscorefromSCORE_COPYt

结果如下:

2、利用Oracle自带的列转行函数unpivot也可以完美解决该问题,具体语法结构如下:select字段from数据集

unpivot(自定义列名/*列的值*/for自定义列名in(列名))

实现代码如下:selectstuname,coursename,scorefrom

score_copyt

unpivot

(scoreforcoursenamein(英语,数学,语文))

结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。