怎么在SQL中实现行转列和列转行
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,怎么在SQL中实现行转列和列转行?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。行列转换就是如下图所示两种展示形式的互相转换行转列假如
千家信息网最后更新 2025年11月08日怎么在SQL中实现行转列和列转行
怎么在SQL中实现行转列和列转行?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
行列转换就是如下图所示两种展示形式的互相转换
行转列
假如我们有下表:
SELECT *FROM studentPIVOT ( SUM(score) FOR subject IN (语文, 数学, 英语))
通过上面 SQL 语句即可得到下面的结果

PIVOT 后跟一个聚合函数来拿到结果,FOR 后面跟的科目是我们要转换的列,这样的话科目中的语文、数学、英语就就被转换为列。IN 后面跟的就是具体的科目值。
当然我们也可以用 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 studentGROUP BY name
使用 CASE WHEN 可以得到和 PIVOT 同样的结果,没有 PIVOT 简单直观。
列转行
假设我们有下表 student1
SELECT *FROM student1UNPIVOT ( score FOR subject IN ("语文","数学","英语"))通过 UNPIVOT 即可得到如下结果:
我们也可以使用下面方法得到同样结果
SELECT NAME, '语文' AS subject , MAX("语文") AS scoreFROM student1 GROUP BY NAMEUNIONSELECT NAME, '数学' AS subject , MAX("数学") AS scoreFROM student1 GROUP BY NAMEUNIONSELECT NAME, '英语' AS subject , MAX("英语") AS scoreFROM student1 GROUP BY NAME关于怎么在SQL中实现行转列和列转行问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
数学
语文
英语
结果
就是
科目
问题
中实
方法
更多
帮助
解答
易行
直观
简单易行
这样的话
内容
函数
后跟
小伙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全知识主体班会简报
微信多开软件开发违法吗
聊城服务器租赁报价
宁夏电脑服务器生产线
数据库技术基础 同济大学
经营范围网络技术推广
网易版服务器怎么导入单人存档
软件开发的测试环境
如何重新构建数据库 ps4
网络安全从业禁止
北京加工软件开发品牌
计算机专业网络安全哪所大学最好
网络技术个人述职述廉
网络安全警惕什么
nrf52832软件开发
网络安全属性中的可用性是指
网络安全检查滴滴目的
天津麒麟软件开发
软件里怎么做数据库
360网络安全分析报告
安徽软件开发哪里好
什么是网络技术产品介绍
php从数据库下载文件
工程管理软件开发价格
岳阳帮助软件开发
数据库系统设计过程
网络技术个人述职述廉
生信分析租用服务器
服务器硬盘会影响下载速度吗
太原恒速网络技术有限公司好吗