首页数据库oracle中纵表转横表的方法是什么?

oracle中纵表转横表的方法是什么?

时间2024-03-22 02:10:03发布访客分类数据库浏览694
导读:今天这篇给大家分享的知识是“oracle中纵表转横表的方法是什么?”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“oracle中纵表转横表的方法是什么?”文章能帮助大家解决问题。 在oracl...
今天这篇给大家分享的知识是“oracle中纵表转横表的方法是什么?”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“oracle中纵表转横表的方法是什么?”文章能帮助大家解决问题。



在oracle中,可以利用unpivot()函数将纵表转为横表,该函数用于将把一行当中的列的字段按照行的唯一值转换成多行数据,语法为“select 字段 from 数据集 unpivot(列的值 for 自定义列名 in(列名))”。

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

oracle纵表怎么转横表

Oracle列转行就是把一行当中的列的字段按照行的唯一值转换成多行数据。

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

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

1、利用union all 进行拼接,可以完美的把对应的列转为行记录,具体代码如下:

select t.stuname, '英语' as coursename ,t.英语 as score  from SCORE_COPY t
union all
select t.stuname, '数学' as coursename ,t.数学 as score  from SCORE_COPY t
union all
select t.stuname, '语文' as coursename ,t.语文 as score  from SCORE_COPY t

结果如下:

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

select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))

实现代码如下:

select stuname, coursename ,score from
score_copy  t
unpivot
(score for coursename in (英语,数学,语文))

结果如下:


感谢各位的阅读,以上就是“oracle中纵表转横表的方法是什么?”的内容了,通过以上内容的阐述,相信大家对oracle中纵表转横表的方法是什么?已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

oracle

若转载请注明出处: oracle中纵表转横表的方法是什么?
本文地址: https://pptw.com/jishu/649883.html
ubuntu安装mysql的主要方式及操作是什么 oracle里面转为大写的函数是upper函数吗?

游客 回复需填写必要信息