什么是行转列?我理解的行转列就是将列值转换为列名,通俗点说就是是将数据表中的某一列的行数据转换为列名
行转列是我们在开发过程中经常会遇到的一个问题,也是数据分析的时候很有用的一个转换方式,一般情况,我们可以通过简单的case when 来实现行转列的效果
先看一个简单的例子
下图是我们的一张学生成绩的表:
但是往往实际中这并不是我们想要的数据,我们希望看到的是每个学生每一门学科的成绩,并且是一个学生一条记录
通过分析不难看出这个地方我们首先需要对name分组,然后把subject列做一个行转列
具体sql如下:
select name,
max(case subject when '语文' then score else 0 end) as '语文',
max(case subject when '英语' then score else 0 end) as '英语',
max(case subject when '数学' then score else 0 end) as '数学'
from score_tbl
group by name
得到的结果如图所示: