日期:2014-05-19  浏览次数:20834 次

怎么用一条sql语句把学生的分数都列出来
数据库如下
name subject score
云天河 语文 59
云天河 数学 98
云天河 英语 65
柳梦璃 语文 95
柳梦璃 数学 85
柳梦璃 英语 93
韩菱纱 语文 80
韩菱纱 数学 97
韩菱纱 英语 79 


怎么用一条sql语句查出他们的成绩,结果如下形式:
姓名 语文 数学 英语
云天河 59 98 65
柳梦璃 95 85 93
韩菱纱 80 97 79

------解决方案--------------------
SQL code

select name, 
sum(decode(subject,'语文', score,null)) "语文",
sum(decode(subject,'数学', score,null)) "数学",
sum(decode(subject,'英语', score,null)) "英语"
from testTable t
group by name;

------解决方案--------------------
相关子查询法
设你的表名是tablename

select name,
(select score from tablename where name = t.name and subject = '语文'),
(select score from tablename where name = t.name and subject = '数学'),
(select score from tablename where name = t.name and subject = '英语')
from tablename t
group by name;


你试试看,我没做测试。
------解决方案--------------------
select name, 
sum(decode(subject,'语文', score,0)) 语文,
sum(decode(subject,'数学', score,0)) 数学,
sum(decode(subject,'英语', score,0)) 英语
from userTable t
group by name;