我有两张桌子。一个人每周记录每个记录的需求数量,另一个保持每周的供应量,但是在几个skus但是同一个家庭中。我需要做的是从第一个表中提取需求值,例如7000并从第一个记录中提取供应数量值并使用它来填充需求。如果可用的qty> =需求,它将填充该周的需求并停止。如果供应量较少,例如2000年,它将花费可用的金额来填充需求并转移到下一条记录并使用该值并继续这样做,直到该周的需求完成或者记录用完为止。每次使用一个值时,它将减少第一个表中的需求量,因此它不会保持不变。 我正在使用一个现在无法正常工作的游标,因为我认为没有保留需求,我可能需要在第一个游戏中嵌套第二个游标。
以下是我现在的代码,非常感谢您提供的任何帮助:
DECLARE @sku nvarchar (255)
Declare @filled float
Declare @endinv float
Declare @demand float
select @demand = (select demand from testDemand where Date = '2014-11-30')
DECLARE MyCursor CURSOR FOR
SELECT
sku,
filleddemand,
[ending inventory]
FROM Test
where [model family] = '4S' and Date = '2014-11-30' and program ='test tech' and [ending inventory] > '0'
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO
@sku,
@filled,
@endinv
WHILE @@FETCH_STATUS = 0
BEGIN
if @endinv >= @demand
SET @filled = @demand
ELSE SET @filled = @endinv
update testDemand
set Demand = Demand - t.filledsum
FROM testdemand u INNER JOIN (select [model family], Date, sum(filleddemand) as filledsum
from Test
group by [Model Family], Date) as t on t.[Model Family] = u.[Model Family] and u.Date = t.Date
where u.Date = '2014-11-30'
UPDATE Test
SET [Ending Inventory] = [Ending Inventory]- FilledDemand,
Customers = 'testtech'
from Test
WHERE sku = @sku
FETCH NEXT FROM MyCursor INTO
@sku,
@filled,
@endinv
End
CLOSE MyCursor
DEALLOCATE MyCursor