mysql的行转列

sql的行转列

今天去面试,本来准备的东西完全没有问到,全部问的sql基础的东西,很尴尬的没有回答出来。记录一下。有三列数据,一列user,一列科目,一列分数,怎么得到user、科目名称。科目名称下为分数。其实就是考查行转列。

以mysql5.7为列,貌似没有pivot,使用case when吧

表student

usersubjectscore
小明数学88
小明语文77
小明英语100
小刚数学88
小刚语文99
小刚英语60
select
	user,
	sum(subject1) "数学",
	sum(subject2) "语文",
	sum(subject3) "英语",
from
	(select
		user,
		case `subject` when "数学" then score end subject1,
		case `subject` when "语文" then score end subject2,
		case `subject` when "英语" then score end subject3,
	from
		student) s
group by
user

结果

user数学语文英语
小明8877100
小刚889960
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值