SQL行转列、列转行的简单实现
创作时间:
作者:
@小白创作中心
SQL行转列、列转行的简单实现
引用
1
来源
1.
https://www.zhangshengrong.com/p/ERNnQMw2a5/
行列转换是报表分析中常见的需求,本文将介绍如何使用SQL实现行转列和列转行的转换。
行转列
假设我们有以下学生分数表:
可以使用PIVOT关键字实现行转列:
SELECT *
FROM student
PIVOT (
SUM(score) FOR subject IN (语文, 数学, 英语)
)
执行结果如下:
这里需要注意:
- PIVOT后跟一个聚合函数(如SUM)来获取结果
- FOR后面的科目是我们要转换的列
- IN后面的值是具体的科目名称
除了使用PIVOT,还可以使用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
列转行
假设我们有以下学生分数表:
可以使用UNPIVOT关键字实现列转行:
SELECT *
FROM student1
UNPIVOT (
score FOR subject IN ("语文","数学","英语")
)
执行结果如下:
同样,也可以使用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
UNION
SELECT
NAME,
'英语' AS subject ,
MAX("英语") AS score
FROM student1 GROUP BY NAME
总结
以上就是SQL实现行转列和列转行的两种主要方法。希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
热门推荐
番茄巅峰榜上的「新」IP,正吸引着年轻人们
高性能GPU:告别AI助手卡顿时代
王菲新歌《世界赠予我的》刷屏,歌词引热议
哪吒2在海外有多受欢迎 闪耀国际舞台
VBA处理数据库冲突的三种方法
清北交大等名校毕业生都去哪儿了?
来威海,没走过这条路等于白来!
个税综合所得汇算之全年一次性奖金的选择
赵国经与王美芳:画笔下的绝世美女
宽油炒蛋危害大!两种改良方法让孩子也能安心吃鸡蛋
雪窦山弥勒圣坛:一座融合传统与现代的佛教文化地标
女性小腹坠痛?当心这些常见病因!
玛丽莲梦露:绝世之美的三个维度
金审工程:高校审计的数字化转型之路
心理学家:为什么"自私的人"往往过得更好
背诗打卡!“康雍乾”诗春节“走红”, 岱庙新春活动解锁传统文化新玩法
明日方舟新角色黍:神农文化的传承者
小腹痛?这些检查帮你找到病因!
用心理学解读最美祝福:520表白季的情感密码
八字水旺怎么泄?水旺需用木来泄
人类进化和进化适应
Spring Boot最新实战指南:企业级应用最佳实践
昌平君与华阳太后:扶苏失位之谜
Windows 11时间校准全攻略:从基础设置到高级配置
主动作为 锐意进取 ——成都公安全面深化公安改革工作见成效
「音乐情绪」对股票市场的影响
寒假养成好习惯,备战12年义务教育!
红薯再次成为关注对象!医生提醒:这几类人吃红薯时,一定要注意
如何制定职业发展路径——你欠自己一条清晰的道路和成功的计划
溪口弥勒圣坛最新游玩攻略!