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

关于将表中一个列的值以多个列的形式展示出来的问题?
比如有表的数据如下:     Student_Grade
                    Name       Subject         Grade
                    小明       语文               100
                    小明       数学               98
                    小明       英语               95
                    小陈       语文               100
                    小陈       数学               100
现在要一条SQL语句,将数据展示成以下形式,请问如何写
                      小明       语文       100       数学   98     英语     95
                      小陈       语文       100       数学   100   英语     0



------解决方案--------------------
create table Student_Grade(
Name varchar(40),
Subject varchar(40),
Grade varchar(40))


insert into Student_Grade
select '小明 ', '语文 ', '100 ' from dual--
union
select '小明 ', '数学 ', '98 ' from dual
union
select '小明 ', '英语 ', '95 ' from dual
union
select '小陈 ', '语文 ', '100 ' from dual
union
select '小陈 ', '数学 ', '100 ' from dual


select name , '语文 ',sum(decode(Subject, '语文 ',Grade,0)) as 语文成绩,
'数学 ',sum(decode(Subject, '数学 ',Grade,0)) as 数学成绩,
'英语 ',sum(decode(Subject, '英语 ',Grade,0)) as 英语成绩
from Student_Grade
group by name