#sql #oracle
#sql #Oracle
Вопрос:
Я пытаюсь обновить столбец в одной таблице, чтобы он суммировал все значения в другой таблице, связанные с определенным ключом. Я не могу правильно использовать синтаксис и не могу найти ответ на эту проблему в Интернете.
Я пытался изменить место, где я помещаю «СУММУ», но это не сработает.
Вот код:
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_order будет обновлен общей суммой столбца «total» из каждой записи в purchase_order_items, где ключ столбца order_no совпадает в обеих таблицах.
Ответ №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;