我在更新桌子时遇到问题,希望有人可以帮助我。我只是在学习SQL,所以我不确定执行某些过程的最佳方法。我的一张桌子里有一个价值,不知怎的。现在,我需要使用原始值减去不同表中的值之和来更新它。
表1是ORDER_LINES。
ORDER_NO QTY_ON_ORD ORIG_ORD_QTY
0900476 10 100
表2为INVOICED_LINES。
INV_NO SHIP_QTY ORIG_ORD_NO
000441 20 0900476
000441 25 0900476
000441 15 0900476
000441 10 0900476
ORDER_LINES.QTY_ON_ORD的值应为:
ORDER_LINES.QTY_ON_ORD =
ORDER_LINES.ORIG_ORD_QTY - SUM(INVOICED_LINES.SHIP_QTY)
WHERE INVOICED_LINES.ORIG_ORD_NO = ORDER_LINES.ORDER_NO
因此,ORDER_LINES.QTY_ON_ORD的值不正确。这些中的值不断变化,所以我想要一个SQL命令,我可以运行它来动态更新这些。我尝试过很多东西,比如:
UPDATE "ORDER_LINES"
SET QTY_ON_ORD = SELECT (
(SELECT SUM(ORIG_ORD_QTY) FROM "ORDER_LINES" WHERE ORDER_NO = '0900476') -
(SELECT SUM(SHIP_QTY) FROM "INVOICED_LINES" WHERE ORIG_ORD_NO = '0900476')
)
WHERE ORDER_NO = '0900476';
但这不起作用。选择自己在我的查询中打印出正确的数量,但我似乎无法在我的更新中使用该数量。
如果有任何不同,我们正在运行Pervasive SQL。