如何将表中的数据从纵向显示转换成横向显示???
假设有张学生成绩表(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)