交叉表示例

来源:互联网 发布:复制口令打开淘宝 编辑:程序博客网 时间:2024/05/16 01:31
假设有张学生成绩表(CJ)如下
[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60

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

declare @sql varchar(4000)
set @sql = 'select 姓名'
select @sql = @sql + ',sum(case 学科 when '''+学科+''' then 成绩 end) as '+学科
from (select distinct 学科 from CJ) as a
set @sql = @sql+' from cj group by 姓名'
exec(@sql)