行转列:首先我们先创建一个表

表中的数据如下

sql实现行转列和列转行

#行转列
select user_name,
MAX(CASE course WHEN '数学' THEN score else 0  END) 数学,
MAX(CASE course WHEN '语文' THEN score else 0  END) 语文,
MAX(CASE course WHEN '英语' THEN score else 0  END) 英语
FROM test_hjsjy_1
GROUP BY user_name

sql实现行转列和列转行

如果是刚开始借出sql的话,很多人会有一个疑问为啥要用max聚合函数,这不是多此一举吗?

其实不是的,当我们把max函数去掉之后看一下表中的数据是怎么样的:

sql实现行转列和列转行

这是时候我们会发下他们语文和英语的成绩是0;

为什么会这样呢?试着吧group by去掉看一下表数据:

sql实现行转列和列转行

看到这个结果想必就知道为啥要用max函数了,因为group by 分组如果没有聚合函数的话,他只会查询每个分组的第一个元组,所以这里的max函数必不可少

 

相关文章: