select sum(case when 出库单位='a' then 数量 else 0 end) as a ,sum(case when 出库单位='b' then 数量 else 0 end) as b from 出库表 group by 出库单位

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql = 'select '
    select @sql = @sql + 'sum(case 出库单位 when '''+出库单位+''' 
                              then 数量 else 0 end) as '''+出库单位+''',' from (select distinct 出库单位 from 出库表) as aselect @sql = left(@sql,len(@sql)-1) + ' from 出库表'exec(@sql)
    go
      

  2.   

    ttyp(愿赌服输) 写的很好,不过最后 ‘group by 出库单位‘
    有些多余。
      

  3.   

    我还想问一句:如果出库表的厂家数量不定(比如可能是a,b 也可能是a,b,c,d),有什么好的办法?
      

  4.   

    select sum(a) as a,sum(b) as b,sum(c) as c,sum(d) as d from 出库单