客户     订单号   箱型     金额    标记     标记2
丰盛 DDHAO 外箱 3.64 0 1
丰盛 DDHAO 外箱 7.28 0 1
丰盛 DDHAO 外箱 10.92 0 1
丰盛 DDHAO 垫片 .00 0 1
丰盛 外箱 3770.00 0 1
丰盛 DDHAO 外箱 837.20 0 1
丰盛 DDHAO 外箱 327.60 0 1
丰盛 DDD 垫片 .00 0 1
丰盛 DDH 细瓦彩盒 .00 0 1
丰盛 1 格套 .00 0 1
丰盛 CX001 穿心内盒 286.00 0 1
丰盛 外箱 3770.00 0 1
丰盛 ddhaoZB 外箱 395.00 0 1
丰盛 NH001 穿心内盒 975.00 0 1
丰盛 DP001 垫片 120.00 0 1
丰盛 DDHAO 外箱 14.56 0 1
如何实现成这样的呢
订单号      外箱                             垫片                               穿心内盒
DDHAO  金额(同一个订单号的外箱的总金额) 金额(此订单号的所有垫片的总金额) (此订单号的说有穿心内盒的总金额)
DDD    金额(同一个订单号的外箱的总金额) 金额(此订单号的所有垫片的总金额) (此订单号的说有穿心内盒的总金额)
1      金额(同一个订单号的外箱的总金额) 金额(此订单号的所有垫片的总金额) (此订单号的说有穿心内盒的总金额)
DP001  金额(同一个订单号的外箱的总金额) 金额(此订单号的所有垫片的总金额) (此订单号的说有穿心内盒的总金额)
CX001  金额(同一个订单号的外箱的总金额) 金额(此订单号的所有垫片的总金额) (此订单号的说有穿心内盒的总额)  

解决方案 »

  1.   

    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
       tb
    group by
       订单号
      

  2.   

    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 tb group by 订单号
      

  3.   

    select
       id=row_number()over(order by getdate()),
       订单号,
       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
       tb
    group by
       订单号