select xzms,zsl,sssj
declare @s varchar(8000)
set @s='select xzms'
select @s=@s+',['+sssj+']=sum(case sssj when '''+sssj+''' then zsl else 0 end)' from tb group by sssj
set @s=@s+' from tb group by xzms order by xzms'
exec(@s)

解决方案 »

  1.   

    --try
    declare @s varchar(2000)
    set @s='select xzms '
    select @s=',['+sssj+']=sum(case when sssj='''+sssj+''' then zsl else 0 end) '
    from 表
    group by sssj
    set @s=@s+' from 表 group by xzms 'exec(@s)
      

  2.   

    declare @s varchar(8000)
    set @s = ''
    select 
        @s = @s +',['+sssj+']=sum(case sssj when '''+sssj+''' then zsl else 0 end)'
    from
        (select distinct sssj=convert(char(10),sssj,120) from 表名) a
    order by
        a.sssj
    set @s = 'select xzms'+@s+' from 表名 group by xzms'
    exec(@s)
      

  3.   

    --trydeclare @s varchar(2000)
    set @s='select xzms '
    select @s=@s+',['+sssj+']=sum(case when sssj='''+sssj+''' then zsl else 0 end) '
    from #tb
    group by sssj
    set @s=@s+' from #tb group by xzms '
    print @s
    exec(@s)
      

  4.   

    谢谢 libin_ftsafe(子陌红尘) 了