假设有张学生成绩表(CJ)如下
[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60 想变成
[姓名] [语文] [数学] [物理]
张三 80 90 85
李四 85 92 82
王五 null 60 null 请问用sql语句如何实现上述的显示???sql server2000
谢谢各位老大啦,小弟我想了一整天都还在发闷!
[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60 想变成
[姓名] [语文] [数学] [物理]
张三 80 90 85
李四 85 92 82
王五 null 60 null 请问用sql语句如何实现上述的显示???sql server2000
谢谢各位老大啦,小弟我想了一整天都还在发闷!
,SUM(case 学科 when '数学' then 成绩 else 0 end) as 数学
,SUM(case 学科 when '物理' then 成绩 else 0 end) as 物理from cj
group by 姓名
http://www.mysdn.cn/shujukukaifa/MS-SQL_Server/20061111/66857.html
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)
还有,那个from (select distinct Subject from rowtocol) as a 中的“a“是什么?
原来sum(case Subject when '''+Subject+''' then Result end)要改成:
sum(case Subject when '''+Subject+''' then Result else 0 end)
这样的话王五的语文和物理的成绩只能显示成0了,而不是null
接分吧,哈哈……