Mysql 行转列

最简单的行转列

学生成绩表(tb)如下:

Mysql 行转列_第1张图片


想变成(得到如下结果)

Mysql 行转列_第2张图片

建表:

create table tb(姓名 varchar(10), 课程 varchar(10), 分数 int);
insert into tb values('张三', '语文', 74);
insert into tb values('张三', '数学', 83);
insert into tb values('张三', '物理', 93);
insert into tb values('李四', '语文', 74);
insert into tb values('李四', '数学', 84);
insert into tb values('李四', '物理', 94);

查询:

select 姓名 as 姓名,
  max(case 课程 when '语文' then 分数 else 0 end) 语文,
  max(case 课程 when '数学' then 分数 else 0 end) 数学,
  max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名;

SELECT 姓名, 语文, 数学, 物理 FROM tb PIVOT ( MAX (分数) FOR 课程 IN (语文,数学,物理))  ORDER BY 姓名 DESC;

你可能感兴趣的:(Mysql 行转列)