老年优待证办理:SQL题:请用一条SQL查询(ORACLE)语言实现行列转换

来源:百度文库 编辑:高考问答 时间:2024/04/29 08:38:17
假设有张学生成绩表(CJ)如下
[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60

想变成
[姓名] [语文] [数学] [物理]
张三 80 90 85
李四 85 92 82
王五 null 60 null
请用一个可以直接执行的SQL解决上题问题。这是以前的一个问题,请不用存储过程OR其他形式,我看不懂。郁闷ING......
另:请勿跟与问题无关的回答。谢谢合作!

还是这道题啊,如果只是针对本题,可以用以下的SQL语句

select 姓名,
sum(case 学科 when '语文' then 成绩 end) as 语文,
sum(case 学科 when '数学' then 成绩 end) as 数学,
sum(case 学科 when '物理' then 成绩 end) as 物理
from cj group by 姓名

yclfwm 给我加分哦!(-1 表示没有成绩记录)
select student,nvl(sum(yuwen),-1) as yuwen,nvl(sum(shuxue),-1) as shuxue,nvl(sum(wuli),-1) as wuli
from ( select student,
case when cource='yuwen' then mark else null end as yuwen,
case when cource='shuxue' then mark else null end as shuxue,
case when cource='wuli' then mark else null end as wuli
from bob_cj )
group by student
order by student