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实现行转列和列转行的两种主要方法。希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
热门推荐
揭秘1937蒋介石与陈诚的历史决策:华北还是上海?
痛彻心扉的爱:分手之歌词解析
燃气热水器选购指南:多点用水家庭首选秘诀
如何解读血常规化验单? 血液指标背后的健康信息
睡觉膝盖不自觉拱起,正常吗?教你几个健康睡姿
上坟为何点红蜡烛(上坟用红蜡烛还是白蜡烛)
嘴巴干裂起皮,喝水不管用?中医:不是缺水,是这个器官有问题!
如何实现国内期货市场的套利操作?这种套利操作有哪些风险因素?
股静脉置管术及并发症的处理
商业策划案怎么写?附商场230个策划案例
Power BI自定义"万"单位的完整教程
麦乳精:一种跨越百年的营养饮品
高效写作指南:借助AI技术提升文章质量
博士申请材料指南:简历与成绩单的准备要点
事故赔偿金额分配指南:从责任认定到家属赔偿
7代GTI和7.5代GTI区别是什么?
如何打造团队队徽
提肛运动的时候要憋气吗?正确做法和注意事项全解析
春风450SR vs 铃木GSX250R:性能、保值、配置全方位对比
权力的博弈:曹操与袁绍的决裂及北方霸权的确立
体育赛事是什么意思?现代体育赛事的分类与运动项目一览表
可尔必思是什么饮料?与养乐多有何不同?
如何早期识别卒中?专家:警惕身体变软、头晕、流口水、嗜睡
军医紧急补救指南:冬季皮肤问题这样防治
【建交50周年】一个多元文化融合的国家-马来西亚
这是我看过的最全面、最细致的《西部世界》解读
广西河池“花山秘境+温泉寻春”4天3晚深度游
去澳大利亚读什么大学好?2024最新澳大利亚大学排名及专业选择指南
央国企并购重组走出新路径
吃洋葱的四大禁忌