code           numb       ck 
A001           10           K01 
A002           20           K01 
A001           15           K02 
A001           15           K03 
A001           0             K04 
我认为上面的东西应该加一字段,来判断谁先扣,谁后扣,不然不好搞.或者生成一临时表,ID自然排序.

解决方案 »

  1.   

    我倒是做出来了,不过一堆语句觉得不爽,也不知效率怎样,固请大家出下手,最好一条语过搞定,不用循环之类完意declare @tbid int  '当前的读到记录时的ID,以用于更新时直用ID定位
    declare @sels int  '销售量
    declare @stmb int  '开始循环数
    declare @numb int  '总循环数
    declare @ku int    '当前记时的实际数存数set @stmb=0
    set @sels=6select @numb=count(0) from AA
    while @stmb < @numb
    begin
    set @ku=0
    select @ku=numb,@tbid=id from AA where numb>0
    if @ku-@sels > 0
      begin
       print '这里已扣完销售数量'
       update AA set numb=0 where id = @tbid
      end
    else
      begin
       update AA set numb= numb-@ku where id = @tbid
       set @ku=@sels-@ku
       print '这里只扣完其库存数,剩余的数量在下一个环节上再扣'
      end
    set @sels=@sels-@ku
    print @ku
    set @stmb=@stmb+1
    end
      

  2.   

    搞错,这里更正下      print   '这里已扣完销售数量' 
          update   AA   set   numb=numb-@sels   where   id   =   @tbid