有个数量是某个货品的发货量15000,需要把这个数量按照收货数量依次来分配.
没有分配完的就分配在最后一次收货时间上。下面是收货数据
货品 收货日期 收货数量 发货数量
A 2010-10-12 3000 3000
A 2010-12-05 4000 4000
A 2011-01-10 5000 8000=5000+3000
没有分配完的就分配在最后一次收货时间上。下面是收货数据
货品 收货日期 收货数量 发货数量
A 2010-10-12 3000 3000
A 2010-12-05 4000 4000
A 2011-01-10 5000 8000=5000+3000
declare @table table (货品 varchar(1),收货日期 datetime,收货数量 int,发货数量 int)
insert into @table
select 'A','2010-10-12',3000,3000 union all
select 'A','2010-12-05',4000,4000 union all
select 'A','2011-01-10',5000,nullDECLARE @i INT
SET @i = 15000
UPDATE @table
SET 发货数量 = @i - ( SELECT SUM(ISNULL(发货数量, 0))
FROM @table
WHERE 货品 = 'A'
)
WHERE 发货数量 IS NULLSELECT * FROM @table
/*
货品 收货日期 收货数量 发货数量
---- ----------------------- ----------- -----------
A 2010-10-12 00:00:00.000 3000 3000
A 2010-12-05 00:00:00.000 4000 4000
A 2011-01-10 00:00:00.000 5000 8000
*/