1、行转列
假如有一张表T,字段有name,subject,score,数据如下
Name | Subject | Score |
---|---|---|
小明 | 语文 | 30 |
小明 | 数学 | 22 |
小明 | 英语 | 66 |
小花 | 语文 | 30 |
小花 | 数学 | 33 |
小花 | 英语 | 67 |
转换成为 name,语文,数学,英语, 即 小明,30,30,30
Name | 语文 | 数学 | 英语 |
---|---|---|---|
小明 | 30 | 22 | 66 |
小花 | 30 | 33 | 67 |
这里就需要用到case when 以及 sum(max也可以,依据实际情况)
-- 遍历值,这里max也可以替换为sum
select name,
max(case subject when '语文' then score else 0 end) as 语文,
max(case subject when '数学' then score else 0 end) as 数学,