表为:
商品1  包装费 商品费
商品2  包装费 商品费
商品3  包装费 商品费
商品4  包装费 商品费
商品1  包装费 商品费
求 :  合计 商品小类合计   商品1 商品2 商品3 商品4
包装费:
商品费:帮我想想解决办法

解决方案 »

  1.   

    用交叉才能实现,参考下面:
    create table tb(A varchar(10),B varchar(10),Qty int)
    insert into tb
    select       'A1',  'B1',  2 union all 
    select       'A2',  'B2',  5 union all 
    select       'A3',  'B1',  4 union all 
    select       'A1',  'B2',  6declare @s1 nvarchar(4000)
    select @s1=''select @s1=@s1+','+B+'=MAX(case when B='''+B+''' then Qty end)' from tb group by B
    select @s1='select A' + @s1 + ' from tb group by A'
    exec(@s1)drop table tb
      

  2.   

    这样应该可以(我以前一直用)
    select sum(包装费+商品费) 合计,sum(包装费) 商品小类合计,sum(iif(商品=商品1,包装费,0)) 商品1,sum(iif(商品=商品2,包装费,0)) 商品2,sum(iif(商品=商品3,包装费,0)) 商品3,sum(iif(商品=商品4,包装费,0)) 商品4 from 表
    union
    select sum(包装费+商品费) 合计,sum(商品费) 商品小类合计,sum(iif(商品=商品1,商品费,0)) 商品1,sum(iif(商品=商品2,商品费,0)) 商品2,sum(iif(商品=商品3,商品费,0)) 商品3,sum(iif(商品=商品4,商品费,0)) 商品4 from 表
    ====================================
    sql 是无所不能的
      

  3.   

    另外iif只能用于access及foxpro
    如果用sqlserver,就用case...when
    如果用oracle,就用decode