- 静态的交叉表
- select name,sum(case subject when '数学' then source else 0 end) as '数学',
- sum(case subject when '英语' then source else 0 end) as '英语',
- sum(case subject when '语文' then source else 0 end) as '语文'
- from test
- group by name
动态的交叉表
- declare @sql varchar(8000)
- set @sql = 'select name,'
- select @sql = @sql + 'sum(case subject when '''+subject+'''
- then source else 0 end) as '''+subject+''','
- from (select distinct subject from student1) as a
- print(@sql)
- print('------------------------------------------------------------------------------')
- select @sql = left(@sql,len(@sql)-1) + ' from student1 group by name'
- print(@sql)
- exec(@sql)
- go
//仅限于个人记忆~网上还有其他更好的资料~