How to implement FIFO in sql

前端 未结 4 947
星月不相逢
星月不相逢 2020-12-16 05:35

I working on FIFO implementation in sql. I have Batch number concept in my application. If suppose I am selling on inventory then my application should tell me that which in

4条回答
  •  天涯浪人
    2020-12-16 05:55

    One query .. like this

    This should be tweaked for you case as you have groups and other stuff, is only for example purposes.

    ;with qty as (
      select 15 as value
    )
    ,l as (
      select 
        ROW_NUMBER () over (order by accept_date desc) rn
        ,*
      from xxx
    )
    ,q as (
      select 
        batch_no
        ,accept_date
        ,case when value>qty then value-qty else 0 end as remainder
        ,case when value>qty then qty else value end as used
        ,rn
      from l
      cross join qty
      where rn=1
      union all
      select 
        r.batch_no
        ,r.accept_date
        ,case when q.remainder>r.qty then q.remainder-r.qty else 0 end  as remainder
        ,case when q.remainder>r.qty then r.qty else q.remainder end as used
        ,r.rn
      from q 
      join l r
      on q.rn+1 = r.rn
      where  q.remainder!=0
    )
    select * 
    from q
    where used != 0
    

    and the fiffle for it http://sqlfiddle.com/#!6/9b063/34/0

提交回复
热议问题