一、MySQL的行转列
案例一:
数据准备:
1、创建salgrade学生成绩表:
create table salgrade(
name varchar(20) comment '学生姓名',
subject varchar(20) comment '学科',
score float comment '成绩'
) engine=InnoDB charset = UTF8;
2、插入数据进sagrade表:
INSERT INTO salgrade values('nick', '语文', 80);
INSERT INTO salgrade values('nick', '数学', 70);
INSERT INTO salgrade values('nick', '英语', 90);
INSERT INTO salgrade values('john', '语文', 60);
INSERT INTO salgrade values('john', '数学', 68);
INSERT INTO salgrade values('john', '英语', 75);
INSERT INTO salgrade values('sail', '语文', 85);
INSERT INTO salgrade values('sail', '数学', 70);
INSERT INTO salgrade values('sail', '英语', 100);
- 查询出来的数据:
需求一:行转列,转换为姓名、学科、成绩
学生姓名 | 语文成绩 | 数学成绩 | 英语成绩 |
---|---|---|---|
nick | 80 | 70 | 90 |
john | 60 | 68 | 75 |
sail | 85 | 70 | 100 |
使用case when then else来实现:
select
name,
max(case subject when '语文' then score else 0 end) as