我有两个表Orders和Inventory。
create table #orders
(orderId int,
demand decimal,
itemId int)
create table #inventory
(invId int,
qtyOnHand decimal,
itemId int)
insert into #orders
values(101, 2, 999)
insert into #orders
values(102, 1, 999)
insert into #inventory
values(601, 1, 999)
insert into #inventory
values(602, 4, 999)
insert into #inventory
values(603, 1, 999)
我需要将相应的库存数量分配给已排序的订单。因此,预期结果是:
orderID - inventoryID - reservedQty
101 601 1
101 602 1
102 602 1
主要问题是,在我将其分配给订单时,#inventory.qtyOnHand正在更改
我已经尝试过汇总所有广告资源
SELECT
itemId,
sum(qtyOnHand) as qtyOnHand,
STUFF((
SELECT ', ' + cast(invId as varchar)
FROM #inventory
WHERE (itemId = inv.itemId)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'),1,2,'') AS inv_info
into #inv_aggr
FROM #inventory inv
GROUP BY itemId
select #orders.orderId,
case when ( #inv_aggr.qtyOnHand >= (select sum(o.demand) from #orders o where o.itemId = #orders.itemId and o.orderId <= #orders.orderId))
then #orders.demand
else #inv_aggr.qtyOnHand - (select coalesce(sum(demand), 0) from #orders o where o.itemId = #orders.itemId and o.orderId < #orders.orderId)
end as qty_rsvd,
#inv_aggr.inv_info
from #orders
inner join #inv_aggr
on #inv_aggr.itemId =#orders.itemId and #inv_aggr.qtyOnHand > 0
但这没有帮助,因为我可以按库存拆分和匹配订单
我将不胜感激有关如何实施此任务或如何将这项任务分成几部分的建议。