0

我有两张桌子 AORDER 用于购买和 BORDER 出售。我想获得待定数量。销售订单可以针对一份采购订单包含 1 条以上的记录。我不想显示那些挂起数量为 0 的订单。我试过这个:

SELECT ;
      aorder.orderid,;
      aorder.orderdate,;
      aorder.itemname,;
      aorder.partyname,;
      aorder.qty as Purchase,;
      SUM(border.qty) AS Sale,;
      SUM(aorder.qty-border.qty) as Pending;
   FROM ;
      aorder;
         LEFT JOIN border ;
            ON aorder.orderid = border.porderid;
   GROUP BY ;
      aorder.orderid,;
      aorder.orderdate,;
      aorder.itemname,;
      aorder.partyname,;
      aorder.qty

但是我没有隐藏那些购买数量=销售数量的记录。

提前谢谢。

4

1 回答 1

0

正如 Shahkalpesh 提到的,您确实需要应用拥有,但您的 SUM 不正确。

它应该是

aorder.qty - SUM(border.qty) > 0; && 也供您的领域参考。

原因是,SUM 是对总和中的每个部分求和。您将只有一个“购买”记录,但有许多“销售”记录,如库存控制先进/先出 (FIFO)、后进/先出 (LIFO) 等

因此,假设您有数量为 10 的 PURCHASE 订单 #1,并且已分别售出数量为 2、1、1、3、2、1 的时间......总共 6 条销售记录。你正在做的是

sum( 10 - 2 
   + 10 - 1
   + 10 - 1
   + 10 - 3
   + 10 - 2
   + 10 - 1 )

修改后的方法是...

10 - SUM( 2 + 1 + 1 + 3 + 2 + 1 )
于 2013-03-11T11:40:46.767 回答