有个数量是某个货品的发货量15000,需要把这个数量按照收货数量依次来分配.
没有分配完的就分配在最后一次收货时间上。下面是收货数据
货品   收货日期    收货数量    发货数量
A      2010-10-12    3000       3000
A      2010-12-05    4000       4000
A      2011-01-10    5000       8000=5000+3000

解决方案 »

  1.   


    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
    */