MYSQL怎样横表转换纵表?图解

根据你描述,我觉得额,你可能是想知道,行如何转列,列如何转行吧。

行转列
表如下:
在这里插入图片描述
(1)行转列(利用最大值)

select user_name,

MAX(CASE WHEN course=‘语文’ THEN score ELSE 0 END) 语文,

MAX(CASE WHEN course=‘英语’ THEN score ELSE 0 END) 英语,

MAX(CASE WHEN course=‘数学’ THEN score ELSE 0 END) 数学

from rows_test GROUP BY user_name
在这里插入图片描述

(2)行转列(利用sum总和)

select user_name,

SUM(CASE WHEN course=‘语文’ THEN score ELSE 0 END) 语文,

SUM(CASE WHEN course=‘英语’ THEN score ELSE 0 END) 英语,

SUM(CASE WHEN course=‘数学’ THEN score ELSE 0 END) 数学

from rows_test GROUP BY user_name

在这里插入图片描述

(3)行转列(行合并)

select user_name,GROUP_CONCAT(course,":",score) from rows_test GROUP BY user_name
在这里插入图片描述
列转行
在这里插入图片描述
select user_name, ‘英语’ COURSE , EN_SCORE as SCORE from column_test
union select user_name, ‘语文’ COURSE, CN_SCORE as SCORE from column_test

union select user_name, ‘数学’ COURSE, MATH_SCORE as SCORE from column_test

order by user_name,COURSE;
在这里插入图片描述
整理了一个比较简单的案例方法,学到了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值