?
在我们平时使用数据库时,经常会发现有的表列数过多,为了提高效率,我们经常对要查询的表来纵横表变换。
一.行转列
1.PIVOT函数
PIVOT(任意聚合函数FOR列名IN(类型))
其中,【聚合函数】聚合的字段,是需要转化为列值的字段;【列名】是需要转化为列标识的字段,【类型】即是需要的结果展示,【类型】中可以指定别名; IN中还可以指定子查询。
2、使用 MAX 和 DECODE 函数
3、使用 CASEWHEN和GROUPBY
二、列转行
1、使用对应的UNPIVOT函数
函数说明:
UNPIVOT(自定义列名1【列的值】FOR自定义列名2【列名】IN(【列名】))
其中,【列的值】字段,是将我们的值字段转为行数据中的【自定义列名1】;【列名】是将我们的列标题字段转为行数据中的【自定义列名2】,【列名】即是转为行的列名。
2.用union all 进行拼接
【oracle对表的纵横表变换】?
推荐阅读
- 付费知识之数据库学习|少儿编程 | 探讨C++课程、MIT Scratch课程、python课程、Noi竞赛、蓝桥怎么引导(如何才能让小孩子飞的更高?附开发工具的下载与安装
- Java架构专栏|Docker 安装MySQL5.7(简单版本)
- 陆金所金融核心场景数据库的去 O 之路
- MySQL|MySQL高级-SQL优化步骤
- ERD Online 适合场景分析
- 国产数据库前50排名|介绍几个国产数据库
- 亮点抢先看|StarRocks Summit Asia 2022 全议程公布!
- 队列|数字人技术在直播场景下的应用
- SQL|MVCC在重复读和读已提交场景以及幻读的解决