declare @Str varchar(3000)
 set @str='select '
 select @str=@str+',sum(case 名称 when '''+名称+''' then 合计 else 0 end)['+名称+']'
 from (select distinct 名称 from 表)a
 set @str=@str+' from 表 group by 名称'
 exec(@str)

解决方案 »

  1.   

    sorry,修改一下
    ---------------------
    declare @Str varchar(8000)
     set @str=''
     select @str=@str+',sum(case 名称 when '''+名称+''' then 合计 else 0 end)['+名称+']'
     from (select distinct 名称 from 表)a
     set @str=stuff(@str,1,1,'')
     exec('select '+@str+' from 表 group by 名称')
    go
      

  2.   

    使用交叉表
    declare @Str varchar(8000)
     set @str=''
     select @str=@str+',sum(case 名称 when '''+名称+''' then 合计 else 0 end as '+名称+')
     from (select distinct 名称 from 表)a
     set @str=stuff(@str,1,1,'')
     exec('select '+@str+' from 表 group by 名称')
    go