declare @s varchar(8000)
set @s = 'select county as cityCode, ayear'
select @s = @s + ', sum(case when code = ''' + code + ''' then data end) as [' + code + ']'
from (select distinct code from tablename) a
set @s = @s + ' into newtablename from tablename group by county, ayear'
exec(@s)

解决方案 »

  1.   

    谢谢!
    但是又一个新的问题:我按照你提供的代码,我修改之后运行发现能够实现基本要求了。但是最后生成的表格的数据列很乱,不是我想要的从A0101 开始到A1101结束,并且里面的内容也很乱,不是按照cityCode的顺序排列下来的,比如从11开头的城市代码开始排列,还有就是里面的数据年份也不是很好排列,有些杂,上一条记录是2000年的,下一条又是1998年的。不知道高手能否帮我解决这些疑问!再次不胜感激!
      

  2.   

    加两个order bydeclare @s varchar(8000)
    set @s = 'select county as cityCode, ayear'
    select @s = @s + ', sum(case when code = ''' + code + ''' then data end) as [' + code + ']'
    from (select distinct code from tablename) a
    order by code
    set @s = @s + ' into newtablename from tablename group by county, ayear order by county, ayear'
    exec(@s)