MYSQL中将行变列方法
建表:
create table 学科(Name varchar(10),Subject varchar(10),Result int);
insert into 学科 values('张三','语文',74);
insert into 学科 values('张三','数学',83);
insert into 学科 values('张三','物理',93);
insert into 学科 values('李四','语文',74);
insert into 学科 values('李四','数学',84);
insert into 学科 values('李四','物理',94);
数据如下:
提问:如何将科目变成字段名?然后成绩在科目字段下面呢?
方法1:
SELECT name,
MAX(CASE subject WHEN '数学' THEN result ELSE 0 END ) math,
MAX(CASE subject WHEN '物理' THEN result ELSE 0 END ) English ,
MAX(CASE subject WHEN '语文' THEN result ELSE 0 END ) Chinese
FROM 学科
GROUP BY name
结果如下:
方法2:
select name ,group_concat(result Separator ';') as result
from 学科
group by name
结果如下: