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实现行转列和列转行的两种主要方法。希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
热门推荐
网络攻防:新时代的挑战与应对策略
如何评价数据仓库建设好坏?有哪些量化指标
林黛玉死后贾府被抄家的多重原因分析
知识图谱:为何建?如何用?应何为?
六大最佳复合训练动作及详细教程,快速提升力量与肌肉质量
如何走出“月光族”困境:理财规划与消费习惯的重要性
可以提前准备过年菜单了,这8道家常菜做法简单,营养又美味
一项远被低估的燃脂运动,比跑步轻松太多了(懒人进
蔬菜的营养价值有哪些
如何有效屏蔽垃圾短信:保护隐私与提升手机使用体验的实用指南
房产证加名字变更手续流程及安置房办证难题解析
如何快速实现财务自由?听听硅谷天使投资人的建议!
项目部管理群名怎么取名
稀有而珍贵的宝石:从紫翠玉到红色绿柱石
冲突解决在资源分配中的作用:寻找解决方案并建立共识
Excel中一天24小时怎么算
东京宣布四天工作制改革,世界第一大都市圈能否复制冰岛、英国的成功经验?
如何通过文献反推你的科研选题?
激光去妊娠纹:原理、效果与护理全解析
以科技创新促进产业体系的完整性先进性安全性
常吃布洛芬或双氯芬酸钠止痛,可能有哪些危害?止痛还能选什么?
美国留学行业的现状与未来发展趋势如何
跨学科合作:公共营养师与其他健康专业人员的协同工作
《喜剧之王单口季》:去精英化的relax与进阶创作的passion
GPT-3.5-turbo与GPT-4o-mini模型深入对比分析
2024年高质量国漫推荐:十部必看良心作品详解
不爱吃蔬果的人,能用“维生素片”代替吗?
如何根据汇率变动计算黄金价值?这种计算如何帮助国际投资决策?
GH3230合金密度及其影响因素探讨
如何控制吃饭热量