问题描述:

描述:在项目中,需要将表中日期数据行,用视图转列显示月报表


解决方案:

注意:多聚合必须重命名。

create table pivottest(
主键 varchar2(50) default sys_guid() not null,
日期 varchar2(10),
学生姓名 varchar2(20),
学生分组 varchar2(10),
学号   varchar2(10)
)insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'01','张三','一组','001');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'01','李四','一组','002');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'01','王五','二组','003');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'01','赵六','二组','004');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'02','狗蛋','一组','005');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'02','狗剩','一组','006');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'02','狗狗','二组','007');
insert into pivottest (主键,日期,学生姓名,学生分组,学号) values (sys_guid(),'02','狗三','二组','008');
commit;

SELECT * FROM pivottest pivot(max(学生姓名) AS 姓名,max(学号) AS 学号 for 日期 in ('01' AS 一班,'02' AS 二班)) order by 学生分组

按日期值穿透,姓名、学号聚合之后,不能存在影响聚合的【主键】字段存在,否则会存在无法合并行的情况

通过处理原表,去掉主键的查询,即可实现。(详细参见参考里第一篇文章,这里主要还是自己去理解,哪些列能要,哪些不能要)

SELECT * FROM (SELECT  日期, 学生姓名, 学生分组, 学号 FROM pivottest) pivot(max(学生姓名) AS 姓名,max(学号) AS 学号 for 日期 in ('01' AS 一班,'02' AS 二班)) order by 学生分组


参考文章:

Oracle 行列转换函数pivot、unpivot的使用(二)(含decode或case用法,该作者其他文章也有点儿意思)
oracle官方
Oracle:Pivot 和 Unpivot 转多列并包含多个名称
简书上的文章,用pivot实现行转列,含case 用法
Oracle 行转列 动态出转换的列(含动态行转列)


Oracle 行列转换函数pivot使用相关推荐

  1. oracle 总转横函数,详解Oracle行列转换函数-pivot函数和unpivot函数-多智时代

    今天主要介绍一下Oracle行转列及列转行常见函数,下面一起来看看吧! 行列转换 pivot函数:行转列函数 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): ...

  2. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)

    一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...

  3. oracle 的行列转换函数,Oracle行列转换函数

    VM_CONCAT vm_concat可以用来进行行转列,默认以逗号分隔,可通过vm_concat(name,',','|')修改为|1 2 3 4 5 6 7 8 9 10 11 12 13SQL& ...

  4. oracle 行列转换函数

    oracle行转列.列转行函数在日常工作中起着至关重要的作用,现在把应用方法总结如下: 参考博客为:https://www.cnblogs.com/waynelo/p/9869020.html piv ...

  5. Oracle 行列转换

    Oracle 行列转换 1.固定列数的行列转换 如 student subject grade --------- ---------- -------- student1 语文 80 student ...

  6. mysql unpivot_SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子...

    使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...

  7. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换

    几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...

  8. Oracle行列转换的思考与总结

    最近几天一直在弄Oracle-SQL的问题,涉及到了一些平时没有用到的东西,也因此而在这里郁闷了好久.现在问题得到了解决虽说不算完美.但是还是和大家一起分享一下. 行列转换之一:sum(case wh ...

  9. Oracle 行列转换总结

    行列转换包括以下六种情况: *列转行 *行转列 *多列转换成字符串 *多行转换成字符串 *字符串转换成多列 *字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的 ...

最新文章

  1. toolbar ,textfield,图片拉伸,Bundle
  2. 如何学习streamdecoder类_如何学习篇5:强化2种能力——2种学习模式之运动类:隐性学习...
  3. IA-32系统编程指南 - 第三章 保护模式的内存管理【1】
  4. 15、如何在Linux和Windows下清除DNS缓存
  5. 省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring
  6. 有关内存释放的一些问题
  7. list集合去重的三种方式
  8. v-if 与v-show 的区别及使用场景
  9. lisp的vla函数画矩形_利用Lisp做Tin三角网建模(源代码)
  10. SQL函数学习(函数在实际项目中 之 COALESCE)
  11. 盒子模型的各种高度记录
  12. 转载--Github优秀java项目集合(中文版) - 涉及java所有的知识体系
  13. C#编程--ribbon界面介绍
  14. ssm房屋中介管理系统毕业设计(附源码、运行环境)
  15. 今日头条号问答微头条原创收益向百粉开放
  16. Kali之——菜单中各工具功能
  17. 在springboot中使用腾讯QQ邮箱发送邮件时出现的错误
  18. 火控计算机教案,智能化教学辅助训练系统
  19. 北斗三号频点_北斗三代B2a频点软件接收机的设计
  20. Javascript开发人员的图形和检测循环指南

热门文章

  1. 2021-2027全球与中国工业碳酸钠市场现状及未来发展趋势
  2. 计算机与数学文化论文参考文献,数学文化论文,关于高中数学教学中数学文化相关参考文献资料-免费论文范文...
  3. 优雅地实现Android主流图片加载框架封装,可无侵入切换框架
  4. 干掉Facebook,干掉扎克伯格!
  5. Mac 下面安装 Git 步骤
  6. easyexcel 遇到的问题 org.terracotta.statistics.StatisticsManager.tags([Ljava/lang/String;)Ljava/util/Set;
  7. Tableau13——雷达图,凹凸图
  8. 什么是uboot与bios?
  9. 计算机毕业设计Java物流车辆规费管理系统的设计与实现(源码+系统+mysql数据库+Lw文档)
  10. 跳舞遇到这五种人,请珍惜!入门舞感的四点必看!