select sum(case when 收费项目='房租'  then 收费金额 else 0 end) as 房租,
       sum(case when 收费项目='水电费' then 收费金额 else 0 end) as 水电费,
       sum(case when 收费项目='杂费' then 收费金额 else 0 end) as 杂费
from 表

解决方案 »

  1.   

    declare @s varchar(8000)set @s='select '
    select @s=@s+',['+收费项目+']=sum(case when 收费项目='''+收费项目+''' then 收费金额 else 0 end)'
    from 表 
    gorup by 收费项目
    set @s=' from 表 'exec(@s)
      

  2.   

    name   feiyong
    房租    100
    水电费  50
    杂费    50
    ----------------------------------------------
    declare @sql  varchar(3000)
    set @sql=''
    set @sql='select name'
    select @sql=@sql+',max( case name when '''+name+''' then feiyong else 0 end)['+name+']'
    from (select distinct name from tablename)a
    set @sql=@sql+' from tablename group by name'
    exec(@sql)
      

  3.   

    如果是统计就用sum
    name   feiyong
    房租    100
    水电费  50
    杂费    50
    ----------------------------------------------
    declare @sql  varchar(3000)
    set @sql=''
    set @sql='select name'
    select @sql=@sql+',sum( case name when '''+name+''' then feiyong else 0 end)['+name+']'
    from (select distinct name from tablename)a
    set @sql=@sql+' from tablename group by name'
    exec(@sql)
      

  4.   

    select sum(case when 收费项目='房租'  then 收费金额 else 0 end) as 房租,
           sum(case when 收费项目='水电费' then 收费金额 else 0 end) as 水电费,
           sum(case when 收费项目='杂费' then 收费金额 else 0 end) as 杂费
    from 表
      

  5.   

    动态SQL,如果是求最大值就用Max,统计就用Sum
    name   feiyong
    房租    100
    水电费  50
    杂费    50
    ----------------------------------------------
    declare @sql  varchar(3000)
    set @sql=''
    set @sql='select name'
    select @sql=@sql+',max( case name when '''+name+''' then feiyong else 0 end)['+name+']'
    from (select distinct name from tablename)a
    set @sql=@sql+' from tablename group by name'
    exec(@sql)
    -------------------------------
    如果是统计就用sum
    name   feiyong
    房租    100
    水电费  50
    杂费    50
    ----------------------------------------------
    declare @sql  varchar(3000)
    set @sql=''
    set @sql='select name'
    select @sql=@sql+',sum( case name when '''+name+''' then feiyong else 0 end)['+name+']'
    from (select distinct name from tablename)a
    set @sql=@sql+' from tablename group by name'
    exec(@sql)