怎么在SQL中实现行转列和列转行
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,怎么在SQL中实现行转列和列转行?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。行列转换就是如下图所示两种展示形式的互相转换行转列假如
千家信息网最后更新 2026年11月02日怎么在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安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
广州淘业互联网络科技
互联网科技工作委员会
互联网科技巨头监管
互联网科技资迅
北京互联网科技
广州互联网科技公司
互联网科技论坛
互联网前沿科技
佰商互联网科技有限公司
重庆科技学院互联网
科技伦理 互联网公司
新华互联网科技2019
佳云科技和互联网广告
互联网科技人工智能实验室
用友工业互联网科技发展
南博望互联网科技有限公司
沐思想互联网科技有限公司
抖集互联网科技技术咨询
互联网科技大会大佬
手磨咖啡
金融科技与互联网金融
互联网金融科技创新
智慧科技互联网
互联网 科技服务平台
中国的互联网科技企业的崛起
青海科技产业互联网发展
东莞新华互联网科技学校
长沙互联网科技
高科技互联网套路