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实现行转列和列转行的两种主要方法。希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
热门推荐
一种邪道的 Git 整洁之法——rebase & squash
不锈钢430与304对比:差异、特性及用途解析
销售收入和营业收入有哪些区别?
气楼如何优化钢构厂房通风环境?
牙疼了一个星期了怎么办
跨境电商PB是什么意思?
清华每年招生,纯高考学生只占42%左右,其余都是特长生或特招生
社区管委如何选择物业管理公司?物业管理与自聘总干事有何区别?
澳洲留学签证申请应该提前多久准备
如何快速查询香港公司的电话?
800瓦一小时几度电?了解电力的用量计算
如何安全地进行美股投资?这种投资的风险如何控制?
壮观的古人类足迹化石!两种古人类曾擦肩而过、友好相处吗?
如何提升沟通技巧和表达能力?几种实用的方法分享
旧房改造的环保材料有哪些选择?环保材料在旧房改造中的应用效果如何?
合同审查的艺术:揭秘隐藏在条款背后的真相
低脂无糖成为消费者新追求,饮料分级管用吗?
多空双开只止盈不止损吗?多空双开怎么玩?
提前了解律师事务所是如何运作的?类型、层级结构及其他常见问题
《哪吒2》创作背后:4000多名动画人托举,饺子拒绝国外三流团队
瑞吉欧幼儿教育机构环境创设:六大特点解析
期货交易中的预埋单:风险、影响及应对策略深度解析
孩子学舞蹈的六个阶段:从启蒙到终身热爱
非暴力不合作运动的三个阶段
留学选校如何查找专业代码?如何快速匹配心仪专业?
简历中怎么描述自己的销售能力
小学生练字课件规范字教学方案
车载自动化测试:提升效率与安全性的关键手段
理财产品展示收益率太“水”!银行“小心思”揭秘
土地转让协议书签订指南:七大要点确保交易安全