Oracle中pivot函数示例详解

 更新时间:2024年05月13日 09:13:32   作者:滕秋利  
PIVOT函数是Oracle数据库中的一个聚合函数,它可以将行数据转换为列数据,这篇文章主要介绍了Oracle中pivot函数示例详解,需要的朋友可以参考下

【基本介绍】

【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))

【说明】:实现将指定字段的字段值转换为列的效果。

【环境】:如下图是样例展示所使用的oracle版本。

【准备样例数据】

样例数据如下图所示:

NAME-学生姓名,SUBJECT-考试科目,GRADES-考试成绩。

【样例展示1】

实行如下sql语句:

select * from T_Student_Grades
pivot
(
sum(grades)
for name in('张三','李四','王五')
)

返回结果如下:按指定科目统计所有学生的总成绩,并将学生姓名字段行转列显示(此时虽然用到了聚合函数sum,由于SUBJECT字段也一并显示,因此sum函数并没有起到效果,显示依旧是每一个学生的各科具体成绩)。

【样例展示2】

实行如下sql语句:

select * from T_Student_Grades
pivot
(
avg(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)

返回结果如下:按指定科目统计所有学生的平均成绩,并将学生姓名字段行转列,显示别名(此时虽然用到了聚合函数avg,由于SUBJECT字段也一并显示,因此avg函数并没有起到效果,显示依旧是每一个学生的各科具体成绩)。

【样例展示3】

实行如下sql语句:

select * from (select name,grades from T_Student_Grades)
pivot
(
sum(grades)
for name in ('张三','李四','王五')
)

返回结果如下:统计每一个学生的所有科目总成绩,并将学生姓名字段行转列(SUBJECT字段没有显示)。

【样例展示4】

实行如下sql语句:

select * from T_Student_Grades
pivot
(
max(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)
where subject='数学'

返回结果如下:按指定科目统计所有学生的最高成绩,并将学生姓名字段行转列,并且只显示数学这一科目的成绩(此时虽然用到了聚合函数max,由于SUBJECT字段也一并显示,因此max函数并没有起到效果,依旧是显示每一个学生的各科具体成绩)。

【样例展示5】

实行如下sql语句:

select * from T_Student_Grades
pivot
(
min(grades)
for name in ('张三' as 张三,'李四' as 李四,'王五' as 王五)
)
where 张三='90'

返回结果如下:按指定科目统计所有学生的最低成绩,并将学生姓名字段行转列,并且只显示数学这一科目的成绩(此时虽然用到了聚合函数max,由于SUBJECT字段也一并显示,因此max函数并没有起到效果,依旧是显示每一个学生的各科具体成绩)。

【样例展示6】

实行如下sql语句(in中使用子查询):

select * from T_Student_Grades
pivot
(
count(grades)
for name in (select distinct name from T_Student_Grades)
)

报错提示:ORA-00936:确实表达式,如下图所示,看来in不支持子查询。

到此这篇关于Oracle中pivot函数详解的文章就介绍到这了,更多相关Oracle pivot函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决ORA-12154 TNS无法解析指定的连接标识符问题

    解决ORA-12154 TNS无法解析指定的连接标识符问题

    Oracle11g server 64bit服务器端安装在Windows Server2008 Enterprise上,安装Oracle11g client 32bit,通过SQL Plus以sysdba身份连接数据库,并且创建表空间、用户、授权成功,在连接数据库时出现问题,下面讲解ORA-12154无法解析指定的连接标识符问题,感兴趣的朋友一起看看
    2024-01-01
  • ORACLE中段的HEADER_BLOCK示例详析

    ORACLE中段的HEADER_BLOCK示例详析

    这篇文章主要给大家介绍了关于ORACLE中段的HEADER_BLOCK的相关资料,文中通过是示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Oracle数据库中字符串截取最全方法总结

    Oracle数据库中字符串截取最全方法总结

    Oracle提供了多种截取字符串的操作方法,可以根据具体需求选择合适的方法进行操作,下面这篇文章主要给大家总结介绍了关于Oracle数据库中字符串截取的最全方法,需要的朋友可以参考下
    2024-03-03
  • 利用PL/SQL从Oracle数据库导出和导入数据

    利用PL/SQL从Oracle数据库导出和导入数据

    这篇文章主要为大家详细介绍了利用PL/SQL从Oracle数据库导出数据和导入数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • ORACLE查看当前账号的相关信息

    ORACLE查看当前账号的相关信息

    ORACLE 12C 后新增了一个功能,它会记录用户的最后一次登录时间:SPARE6字段记录用户的最后一次登录时间,本文给大家ORACLE如何查看当前账号的相关信息,感兴趣的朋友一起看看吧
    2021-06-06
  • OL7.6上RPM方式安装Oracle 19c的教程

    OL7.6上RPM方式安装Oracle 19c的教程

    这篇文章主要介绍了OL7.6上RPM方式安装Oracle 19c的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Oracle连接远程数据库的四种方法

    Oracle连接远程数据库的四种方法

    这篇文章主要为大家详细介绍了Oracle连接远程数据库的四种设置方法和注意事项,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 如何解决Oracle数据表入库中文乱码问题

    如何解决Oracle数据表入库中文乱码问题

    Oracle数据库在处理中文数据时,经常会遇到乱码问题,导致数据无法正常显示和处理,这是因为Oracle数据库默认的字符集为US7ASCII,无法识别中文字符,通过修改数据库,客户端和应用程序字符集,将数据转换为正确的字符集,可以避免乱码问题
    2024-02-02
  • linux下oracle设置开机自启动实现方法

    linux下oracle设置开机自启动实现方法

    你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介绍一般而言如何启动oracle
    2012-11-11
  • 浅析新建Oracle数据库的三种方法

    浅析新建Oracle数据库的三种方法

    以下是对新建Oracle数据库的三种方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08

最新评论