列数不固定的行列转换问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:24:47
我所能得到的数据的结构如下:
level months times
1 5 67
2 6 89
3 7 578
4 8 56
表示的是5,6,7,8月份分别在不同的level阶段所用的时间,想转换
成如下的结构:
level 5月 6月 7月 8月
1 67
2 89
3 578
4 56
且不一定就是四个月,也不一定就是5,6,7,8月,所以列数也不固定,
请问该如何解决,十分感谢!
该问题是在SQLServer中写存储过程中要用到该部分功能

提的问题看不出是在什么环境下转换。

在电子表格里是很容易的:
复制这块数据——光标移到另一位置——选择性粘贴——转置

declare @sql varchar(8000)
set @sql = 'select level '
select @sql = @sql + ' , max(case months when ''' + months + ''' then times else 0 end) [' + months + ']'
from (select distinct months from tablename) as a
set @sql = @sql + ' from tablename group by level'
exec(@sql)