【问题标题】:How do I sum up the total value of each column for an individual key and then assign the total to a value in a different table?如何总结单个键的每列的总值,然后将总值分配给不同表中的值?
【发布时间】:2019-04-15 21:22:25
【问题描述】:

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

我尝试更改放置“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


    【解决方案1】:

    您应该在子查询中使用 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;
      

      【讨论】:

        猜你喜欢
        • 2019-11-23
        • 1970-01-01
        • 2020-12-22
        • 2016-12-19
        • 1970-01-01
        • 2017-05-17
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        相关资源
        最近更新 更多