怎么用SQL语句写交叉表啊?

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:06:50
学号 姓名 课程名 成绩
1 j flash 80
1 j dw 70
1 j asp 70
2 k flash 60
2 k dw 90
2 k asp 80
如何将上表用SQL语句建立类似下表的查询呢??
学号 姓名 flash成绩 dw成绩 asp成绩
1 j 80 70 70
2 k 60 90 80

select a.学号,a.姓名,a.成绩 flash成绩,b.成绩 dw成绩,c.成绩 asp成绩
from 表 a left join 表 b on a.学号=b.学号 and a.课程名>b.课程名
left join 表 c on a.学号=c.学号 and a.课程名>c.课程名
and b.课程名>c.课程名
where c.成绩 is not null

select a.学号,min(a.姓名) as a.姓名,max(case when a.课程名='flash' then a.成绩 else 0 end) as flash成绩,max(case when a.课程名='dw' then a.成绩 else 0 end) as dw成绩,max(case when a.课程名='asp' then a.成绩 else 0 end) as asp成绩from 表 agroup by a.学号