2014-09-26 38 views
0

数量的总和我有2个表:SQL语句 - 数量1台零下2号表

采购订单:

PO #   Part #    PO Qty 
S40000010  103-137    10 

采购单收货

PO #   Part #   Received Qty 
S40000010  103-137    5 
S40000010  103-137    3 

怎么写sql语句提取以下内容:

PO #   Part #   Balance Qty 
S40000010  103-137    2 
+1

你应该包括你已经尝试了什么。 – 2014-09-26 00:45:23

回答

0

你可以做

SELECT po, part, SUM(qty) balance 
    FROM 
(
    SELECT po, part, qty 
    FROM PurchaseOrders 
    UNION ALL 
    SELECT po, part, -1 * qty 
    FROM POReceipts 
) q 
GROUP BY po, part; 

SELECT p.po, p.part, p.qty - COALESCE(r.qty, 0) balance 
    FROM PurchaseOrders p LEFT JOIN 
(
    SELECT po, part, SUM(qty) qty 
    FROM POReceipts 
    GROUP BY po, part 
) r 
    ON p.po = r.po AND p.part = r.part; 

输出:

 
|  PO | PART | BALANCE | 
|-----------|---------|---------| 
| S40000010 | 103-137 |  2 | 

这里是SQLFiddle演示

延伸阅读: