1.多行转多列
行列转换就是如下图所示两种展示形式的互相转换
(1)使用PIVOT函数
SELECT * FROM student PIVOT ( SUM(score) FOR subject IN (语文, 数学, 英语) ) #默认按照score和subject以外其它字段进行group by复制
(2)使用Case When
结果跟上述函数一致,但是当涉及字段较多时,使用case when书写可能不太直观。
SELECT name, MAX( CASE WHEN subject='语文' THEN score ELSE 0 END) AS "语文", MAX( CASE WHEN subject='数学' THEN score ELSE 0 END) AS "数学", MAX( CASE WHEN subject='英语' THEN score ELSE 0 END) AS "英语" FROM student GROUP BY name复制
2.多列转多行
(1)使用UNPIVOT函数
SELECT * FROM student1 UNPIVOT ( score FOR subject IN ("语文","数学","英语") )复制
(2)使用Case When
结果跟上述函数一致,但是当涉及字段较多时,使用case when书写可能不太直观。
SELECT NAME, '语文' AS subject , MAX("语文") AS score FROM student1 GROUP BY NAME UNION SELECT NAME, '数学' AS subject , MAX("数学") AS score FROM student1 GROUP BY NAME UNION SELECT NAME, '英语' AS subject , MAX("英语") AS score FROM student1 GROUP BY NAME复制
3.多行转一列
参考文档:
转载于:https://www.cnblogs.com/badboy200800/p/11326086.html
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
391次阅读
2025-04-17 17:02:24
云和恩墨钟浪峰:安全生产系列之SQL优化安全操作
墨天轮编辑部
245次阅读
2025-03-31 11:08:20
Before & After:SQL整容级优化
薛晓刚
112次阅读
2025-04-14 22:08:44
SQL 优化之 OR 子句改写
xiongcc
99次阅读
2025-04-21 00:08:06
Mysql/Oracle/Postgresql快速批量生成百万级测试数据sql
hongg
78次阅读
2025-04-07 15:32:54
Oracle DBA 必备!这份高效运维的“秘籍”,高频实用 SQL 一网打尽
青年数据库学习互助会
64次阅读
2025-03-31 10:03:00
Oracle数据库常用脚本(七)
lh11811
59次阅读
2025-04-01 08:57:44
“G”术时刻:资深工程师揭秘GBase数据库Hint核心技巧 实现SQL性能跃升
GBASE数据库
54次阅读
2025-04-25 10:10:28
GoldenDB SQL诊断
韦
54次阅读
2025-03-29 22:36:55
如何高效使用 Text to SQL 提升数据分析效率?四个关键应用场景解析
镜舟科技
47次阅读
2025-04-15 18:58:40