我找到了多个答案,如何使用sum和更新,但没有做到这一点。
创建新发票时,我不想使用发票行更新存储数量。我需要总和来处理多行中的相同产品。 编辑:有时我需要在存储已经使用当前更新后添加新发票行,因此我需要标记好的行并总结新行并再次减少存储。
通过几个小时的谷歌搜索和大量的测试我得到它以某种方式工作:
UPDATE Storage
SET StorageQty = StorageQty-(SELECT SUM (InvoiceQty)
FROM InvoiceRows AS Inv
WHERE Inv.ProductId = Sto.ItemID
AND Inv.InvoiceId = #InvoiceId#)
FROM InvoiceRows, Storage AS Sto
WHERE InvoiceRows.ProductID = Sto.ItemID
AND InvoiceRows.InvoiceId = #InvoiceId#
问题是我不理解它是如何工作的,我需要将Invoicerows.StorageOk IS NULL添加到where子句,以便它计算总和并仅更新尚未更新的行。 StorageOk设置为1,带有next子句以标记行以防止多个操作。