我有库存表和订单表...库存中,物品存放在位置明确的位置..即相同的物品可以放在不同的位置......我订购相同的产品....我们需要从库存中分配物品到明确的订单......
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
有时我需要从多个位置挑选数量需求...有时我们需要为多个订单分配相同的位置数量......
答案 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