• 技术文章 >数据库 >Oracle

    oracle纵表怎么转横表

    长期闲置长期闲置2022-05-24 17:29:02原创159

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

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

    oracle纵表怎么转横表

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

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

    28.png

    29.png

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

    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

    结果如下:

    30.png

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

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

    实现代码如下:

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

    结果如下:

    31.png

    推荐教程:《Oracle视频教程

    以上就是oracle纵表怎么转横表的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle
    上一篇:oracle中转为大写的函数是什么 下一篇:怎么删除oracle当前连接的用户
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• oracle怎么查看表属于哪个用户• oracle怎么删除约束条件• 归纳总结Oracle视图知识点• oracle横表怎么转纵表• oracle怎么去掉换行符
    1/1

    PHP中文网