use 查询计划4
go
select a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,sum(b.入库数量) as N'入库数量',sum(c.装箱数量) as N'装箱数量',a.办公室 from 订单记录表 as a left outer join 订单入库表 as b on a.订单号=b.订单号 and a.upc=b.upc 
LEFT OUTER JOIN 订单装箱记录表 as c on a.订单号=C.订单号 and a.UPC=c.UPC where a.订单号='id12212' group by a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,a.办公室 查询出的结果 b.入库数量 这一列的数据翻2倍   c.装箱数量 这一列的数据翻3倍请问各位大侠,这个问题应该如何解决呢?

解决方案 »

  1.   

    先left join变成一张表后,再做sum操作
    select 订单号,UPC,英文名称,中文名称,单位,订单数量,办公室,sum(入库数量) as N'入库数量',sum(装箱数量) as N'装箱数量' from 
    (select a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,b.入库数量 ,c.装箱数量,a.办公室 
    from 订单记录表 as a 
    left outer join 订单入库表 as b on a.订单号=b.订单号 and a.upc=b.upc  
    LEFT OUTER JOIN 订单装箱记录表 as c on a.订单号=C.订单号 and a.UPC=c.UPC 
    where a.订单号='id12212') d
    group by 订单号,UPC,英文名称,中文名称,单位,订单数量,办公室  
      

  2.   

    思路:左外连接之类的,建议先合并为一张表之后,用distinct过滤之后,确认没有重复记录了,在sum。这样就不存在重复加了多次记录的问题。