Как суммировать итоговое значение каждого столбца для отдельного ключа, а затем присвоить итоговое значение значению в другой таблице? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь обновить столбец в одной таблице, чтобы он суммировал все значения в другой таблице, связанной с определенным ключом.Я не могу понять правильный синтаксис и не могу найти ответ на эту проблему в Интернете.

Я попытался изменить место, где я поставил "СУММУ", но это не сработает.

Вот код:

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

Это должно привести к тому, что столбец "total" из таблицы purchase_order будет обновлен на общую сумму столбца "total" из каждой записи в purchase_order_items, где order_noКлюч столбца совпадает в обеих таблицах.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

Вы можете использовать оператор 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;
2 голосов
/ 15 апреля 2019

Вы должны использовать функцию 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...