- 静态的交叉表
- 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
//仅限于个人记忆~网上还有其他更好的资料~
本文介绍如何使用SQL构建静态和动态交叉表,通过案例演示了针对不同科目的成绩进行汇总的方法。利用CASE WHEN语句实现字段的动态生成,适用于成绩统计等场景。
618

被折叠的 条评论
为什么被折叠?



