现有三个表
Student(ID 学生号,Name 姓名),
Subject(SubID 课程号,SubName 课程名),
Score ( ScoreId 成绩号 , SubID 课程号, StdID 学生号, Score 成绩)
数据如下:
Student
a001 张三
a002 王强
Subject
s001 英语
s002 数学
s003 语文
s004 历史
Score
1 s001 a001 78
2 s002 a001 67
3 s003 a001 89
4 s004 a001 76
5 s001 a002 89
6 s002 a002 67
7 s003 a002 84
8 s004 a002 96
怎么能实现如下显示结果:
姓名 英语 数学 语文 历史
张三 78 67 89 76
王强 89 67 84 96
select s.name,max(
case
when ss.sub_id = ‘s001’ then ss.score
end
)‘英语’,
max(
case
when ss.sub_id = ‘s002’ then ss.score
end
)‘数学’,
max(
case
when ss.sub_id = ‘s003’ then ss.score
end
)‘语文’,
max(
case
when ss.sub_id = ‘s004’ then ss.score
end
)‘历史’
from score ss inner join student s
on ss.stu_id = s.id
group by ss.stu_id