用SQL语句,把表中的数据由行变为列.
查询前:
ID 姓名 科目 分数
1 张三 语文 65
2 张三 数学 85
3 张三 外语 75
4 李四 语文 90
5 李四 数学 60
6 李四 外语 50
查询后:
姓名 语文 数学 外语
李四 90 60 50
张三 65 85 75
A:
1.先建表.
create table SCORETABLE
(
ID int not null primary key,
NAME varchar(50),
SUBJECT varchar(50),
SCORE int null
);
2.添加数据.
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(1, '张三', '语文', 70);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(2, '张三', '数学', 85);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(3, '张三', '外语', 75);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(4, '李四', '语文', 90);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(5, '李四', '数学', 60);
insert into scoretable(ID, NAME, SUBJECT, SCORE) values(6, '李四', '外语', 50);
3.用SQL实现.
select NAME as '姓名',
sum(case SUBJECT when '语文' then SCORE else 0 end) as '语文',
sum(case SUBJECT when '数学' then SCORE else 0 end) as '数学',
sum(case SUBJECT when '外语' then SCORE else 0 end) as '外语'
from SCORETABLE
group by NAME