读书人

SQL查询计算结果多了一倍求解!该如

发布时间: 2012-06-19 14:45:20 作者: rapoo

SQL查询计算结果多了一倍,求解!

SQL code
-----订单数量统计列表select     coOrder.OrderID, SUM(coOrderDetail.Qty) AS [订单数量],SUM(stInstoreDetail.Qty) AS [入库数量]From coOrderINNER JOIN coOrderDetail     ON     coOrder.OrderNo=coOrderDetail.OrderNoINNER JOIN pmOrder           ON  coOrder.OrderID =pmOrder.OrderIDINNER JOIN stInstoreDetail   ON  pmOrder.OrderNO=stInstoreDetail.OrderNoWHERE coOrder.OrderID='20120101'GROUP BY  coOrder.OrderID---------------------------------------orderID    订单数量       入库数量20120101     4857           10400            实际正确的入库数量应该为:5200


coOrder表为订单主要信息表 ,对应的coOrderDetail为订单明细表有两个产品,即明细行有2行, pmOrder为生产表 ,stInstoreDetail为产品入库明细表。
求解为什么入库数量是实际的2倍呢,是不是订单的明细行有两上产品的原因,如果是这样,该怎么改下查询呢?

[解决办法]
先合计,再关联
SQL code
select     coOrder.OrderID, coOrderDetail.Qty AS [订单数量],stInstoreDetail.Qty AS [入库数量]From coOrderINNER JOIN (select OrderNo,SUM(Qty) as Qty from coOrderDetail group by OrderNo) as  coOrderDetail   ON     coOrder.OrderNo=coOrderDetail.OrderNoINNER JOIN pmOrder           ON  coOrder.OrderID =pmOrder.OrderIDINNER JOIN (select OrderNo,SUM(Qty) as Qty from stInstoreDetail group by OrderNo) as stInstoreDetail   ON  pmOrder.OrderNO=stInstoreDetail.OrderNoWHERE coOrder.OrderID='20120101'GROUP BY  coOrder.OrderID 

读书人网 >SQL Server

热点推荐