我希望您能帮助创建一个存储过程来更新库存表。首先,我将所有账单项目存储在一个临时表中,然后一旦保存,它将从库存表中扣除库存,然后将其存储在 Bill_Item 表中,Temp_Bill_Item 表将被删除。
问问题
104 次
2 回答
2
临时表和游标都不是必需的:
update stock_table
set qty = qty - bi.qty
from stock_table st
join bill_items bi
on bi.item_id = st.item_id
and bi.itemcode = st.itemcode;
这假设每个项目在 bill_items 表中只出现一次。如果您可以有多个具有相同 itemid/itemcode 的行,则需要稍微不同的语句:
update stock_table
set qty = qty - bi.total_qty
from stock_table st
join (select item_id, itemcode, sum(qty) as total_qty
from bill_items
group by item_id, itemcode
) bi
on bi.item_id = st.item_id
and bi.itemcode = st.itemcode;
(语法未测试,因为您没有发布示例数据来玩)
于 2013-05-01T07:44:50.270 回答
-1
出于您的目的,我会考虑使用光标。
http://msdn.microsoft.com/en-us/library/ms180169.aspx
请注意,如果您不小心,在 SQL 中使用游标会严重影响性能!
于 2013-05-01T07:38:53.007 回答