编写选择查询

时间:2013-12-19 19:13:06

标签: group-by oracle10g inner-join

我有两张桌子:

  table1 =tbl_main:

  item_id fastec_qty
   001       102
   002       200
   003       300
   004       400

  table2= tbl_dOrder
    order_id    item_id     amount
     1001          001      30
     1001          002      40
     1002          001      50
     1002          003      70

如何编写查询以使表的结果如下:

  item_id       amount   difference  
    001         102      22 
    002         200      160
    003         300      230 
    004         400      400

表1中的金额与表2中的总金额之间的差异。

1 个答案:

答案 0 :(得分:2)

SELECT q.item_id, a.fastec_qty AS amount, a.fastec_qty - q.amount AS difference
FROM (
    SELECT item_id, SUM(amount) AS amount
    FROM tbl_dOrder
    GROUP BY item_id
) q
    JOIN tbl_main a ON a.item_id = q.item_id

此处此查询将首先对来自tbl2的{​​{1}}的数量进行求和,然后使用第一个表将item_id该查询的结果发送到JOIN,以便它可以执行差异列的计算。