原代码
declare @s varchar(8000)
set @s='select 序号,项目,单位,单价'select  @s=@s+',['+户主姓名+']=sum(case 户主姓名 when '''+户主姓名+''' then 数量 end)'
from GS_GRSWL group by 户主姓名
set @s=@s+' from GS_GRSWL group by 序号,项目,单位,单价'

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+','+xx人+'数量=sum(case when xx人='''+xx人+''' then 数量 end),'
           +xx人+'金额=sum(case when xx人='''+xx人+''' then 金额 end)' 
          from (select distinct xx人 from 原表) a
    set @sql='select 项目'+@sql+' from 原表 group by 项目'
    exec (@sql)
      

  2.   

    呵呵  分数太少  zjcxc(邹建)可能不会来 ~
      

  3.   

    declare @sql varchar(8000)
    set @sql=''
    set @sql='select 项目,max(单价)'
    select @sql=@sql+','+xx人+'数量=sum(case when xx人='''+xx人+''' then 数量 end),'
           +xx人+'金额=sum(case when xx人='''+xx人+''' then 金额 end)' 
          from (select distinct xx人 from 原表) a
    set @sql='from 原表 group by 项目'
    exec (@sql)这样行吗
      

  4.   

    declare @s varchar(8000)
    set @s='select 序号, 项目,单位,max(单价)'select  @s=@s+','+户主姓名+'数量=sum(case  when 户主姓名='''+户主姓名+''' then 数量 end),'
    +户主姓名+'金额=sum(case  when 户主姓名='''+户主姓名+''' then 金额 end)'
    from (select distinct 户主姓名 from GS_GRSWL) aset @s=@s+' from GS_GRSWL group by 序号,项目,单位,单价'
    exec(@s)老报有语法错误
      

  5.   

    我自己解决了,以下是代码,给大家参考
    declare @s varchar(8000)
    declare @t varchar(8000)
    declare @Field varchar(400)
    declare @p varchar(400)
    declare @F varchar(400)
    set @Field='序号,项目 '
    set @F='省'
    set @p='select '+@Field+' '
    select @s=' '+',['+省+'-数量]=sum(case '+省+' when '''+省+''' then 数量 end)'  
    from Gs_YMFWBC  group by 省select @t=' '+',['+省+'金额]=sum(case 省 when '''+省+''' then 金额 end)'  
    from Gs_YMFWBC  group by 省
    set @s=@p+ @s+@t+' from Gs_YMFWBC  group by '+@Field+' order by '+@Field
    exec(@s)