将订单数量分配给多个库存位置产品

时间:2014-02-24 05:59:03

标签: sql sql-server

我有库存表和订单表...库存中,物品存放在位置明确的位置..即相同的物品可以放在不同的位置......我订购相同的产品....我们需要从库存中分配物品到明确的订单......

declare @stock TABLE 
(
product VARCHAR(10),
location varchar(10),
quantity bigint

)



insert into @stock values('CPU', 'loc1', 10)
insert into @stock values('CPU', 'loc2', 8)
insert into @stock values('CPU', 'loc3', 6)



declare  @Order TABLE
(
orderid int,
product varchar(10),
OrderQuanity bigint
)

insert into @Order values(1, 'CPU',10)
insert into @Order values(2, 'CPU',10)
insert into @Order values(3, 'CPU',1)

我需要的结果如下......

OrderID产品库存位置订单_QtyToBe_Allocated

1 CPU loc1 10

2 CPU loc2 8

2 CPU loc3 2

3 CPU loc3 1

有时我需要从多个位置挑选数量需求...有时我们需要为多个订单分配相同的位置数量......

1 个答案:

答案 0 :(得分:0)

以下是获取所需内容的代码(我不确定Order_QtyToBeAllocated字段,因为它不在您的架构中,但如果您提供详细信息,我可以提供帮助。

点。你的架构很差。您需要在两个表中包含主要内容并加入它们。使用描述/文本字段是不好的做法。您还应该添加位置表并使用查找。如果你愿意,我可以帮忙吗?

使用您的架构:

SELECT 
    orderid,
    o.product,
    location,
    SUM(OrderQuanity) [OrderQuantity]
FROM 
    @order o
INNER JOIN @stock s ON s.product = o.product
GROUP BY
    orderid,
    o.product,
    location