日期:2014-05-20  浏览次数:20451 次

如何将表中的数据从纵向显示转换成横向显示???
假设有张学生成绩表(CJ)如下  
[姓名]   [学科]   [成绩]  
张三   语文   80  
张三   数学   90  
张三   物理   85  
李四   语文   85  
李四   数学   92  
李四   物理   82  
王五   数学   60  

想变成  
[姓名]   [语文]   [数学]   [物理]  
张三   80   90   85  
李四   85   92   82  
王五   null   60   null  

请问用sql语句如何实现上述的显示???sql   server2000
谢谢各位老大啦,小弟我想了一整天都还在发闷!

------解决方案--------------------
http://community.csdn.net/Expert/topic/5335/5335541.xml?temp=.4141199
------解决方案--------------------
select 姓名 ,SUM(case 学科 when '语文 ' then 成绩 else 0 end) as 语文 ,SUM(case 学科 when '数学 ' then 成绩 else 0 end) as 数学 ,SUM(case 学科 when '物理 ' then 成绩 else 0 end) as 物理 from cj group by 姓名
------解决方案--------------------
用SQL语句实现,将行列转换。
http://www.mysdn.cn/shujukukaifa/MS-SQL_Server/20061111/66857.html
------解决方案--------------------
declare @sql varchar(4000)
set @sql = 'select Name as ' + '姓名 '
select @sql = @sql + ' , sum(case Subject when ' ' '+Subject+ ' ' ' then Result end) [ '+Subject+ '] '
from (select distinct Subject from rowtocol) as a
set @sql = @sql + ' from rowtocol group by name '
exec(@sql)