如何汇总单个键的每列的总值,然后将总计分配给不同表中的值?

问题描述 投票:0回答:2

我正在尝试更新一个表中的列,以便汇总与特定键关联的另一个表中的所有值。我无法正确使用语法,我无法在网上找到这个问题的答案。

我已经尝试改变我放“SUM”的位置,但它不起作用。

这是代码:

UPDATE purchase_order
SET total = SUM(SELECT total FROM purchase_order_items
WHERE purchase_order_items.purchase_order_order_no = purchase_order.order_no));

这应该导致purchase_order表中的“total”列更新为purchase_order_items中order_no列键在两个表中匹配的每个条目的“total”列的总和。

sql oracle
2个回答
2
投票

您应该在子查询中使用SUM函数并将结果分配给主表。

UPDATE PURCHASE_ORDER
   SET TOTAL = (SELECT SUM(PURCHASE_ORDER_ITEMS.TOTAL)
                  FROM PURCHASE_ORDER_ITEMS
                 WHERE PURCHASE_ORDER_ITEMS.PURCHASE_ORDER_ORDER_NO =
                       PURCHASE_ORDER.ORDER_NO);

2
投票

你可以使用MERGE声明:

MERGE INTO purchase_order dst
USING (
  SELECT purchase_order_order_no,
         SUM( total ) AS total
  FROM   purchase_order_items
  GROUP BY purchase_order_order_no
) src
ON ( dst.order_no = src.purchase_order_order_no )
WHEN MATCHED THEN
  UPDATE SET total = src.total;
© www.soinside.com 2019 - 2024. All rights reserved.