日期:2014-05-17  浏览次数:20715 次

如何用sql实现这样的效果:一列数放到一行中返回?
如下列情况:

学生表

学生id         学生姓名

1                   张三
2                   李四
.                   .
.                   .

成绩单

课程           分数           学生id

语文           80               1
数学           90               1
语文           85               2
数学           95               2
.                 .                 .
.                 .                 .

查询结果

学生id       学生姓名         语文           数学

1                 张三                 80               90
2                 李四                 85               95
.                 .                       .                 .



------解决方案--------------------
写得够详细的了,把表名和相应字段替换,这样就行:

select
学生表.学生id,学生表.学生姓名,成绩单.语文,成绩单.语文
from 学生表,
(select 学生id,max(decode(课程, '语文 ',分数,null)) as 语文,max(decode(课程, '数学 ',分数,null)) as 数学,
from 成绩单
group by 学生id
) 成绩单
where 学生表.学生id = 成绩单.学生id(+)