先进先出(FIFO)库存成本核算

sam*_*a07 6 sql sql-server-2008

这是一篇有趣的文章,我发现在我的项目中很有用:

基于集合的Speed Phreakery:FIFO库存SQL问题:

我们用来跟踪库存进出我们假想库存仓库的轨道运动的库存表.我们的仓库最初是空的,然后库存由于库存购买(tranCode ='IN')或由于后续退货(tranCode ='RET')而进入仓库,当库存移出仓库时它被出售(tranCode ='OUT').每种类型的库存都由ArticleID标识.由于购买,销售或返回给定物品,库存进出仓库的每次移动都会导致一行被添加到Stock表中,由StockID标识列中的值唯一标识,并描述了多少已添加或删除商品,购买价格,交易日期等.

虽然我在正在进行的项目中使用这个,但我坚持如何在每次交易'OUT'上获得价格.我需要有这个价值来确定我将向客户收取多少费用.

  1. 首先将5个苹果(每个10.00美元)添加到库存中,总计50美元

  2. 将3个苹果(每个20.00美元)添加到8个苹果的库存中,总价格为110.00美元

  3. 然后取出6件物品(每件5美元,每件10美元,每件20美元),共计70美元

  4. 交易完成后,它将留下2个苹果@ 20美元,总计40美元


 Here's my current table
 Item    transaction code    qty     price   
 apple   IN                    5     10.00    
 apple   IN                    3     20.00   
 apple   OUT                   6          

 Manual computation for the OUT transaction price (FIFO)
 QTY     price   total price 
 5       10.00   50.00 
 1       20.00   20.00 
 TOTAL:6         70.00 

 Output of the script:
 Item    CurrentItems   CurrentValue
 apple   2            40.00

 What I need:
 Item    transaction code    qty     price   CurrentItems    CurrentValue 
 apple   IN                    5     10.00   5               50.00 
 apple   IN                    3     20.00   8               110.00 
 apple   OUT                   6             2                   40.00 

 This too will be OK
 Item    transaction code    qty     price   CurrentItems    
 apple   IN                    5     10.00   0               
 apple   IN                    3     20.00   0                
 apple   OUT                   6         70 
Run Code Online (Sandbox Code Playgroud)

发布的剧本赢得了比赛非常有用,我希望有人可以帮我了解如何获得每次'OUT'交易的价格

小智 0

如何构建一个表,其中每个产品项目都有一行,以便为每个苹果插入一行及其价格和可用性(未售出/售出)。
然后,您可以选择前 n 件商品,以及与您想要的每种产品相关的价格。本质上,您只是创建一个项目队列,并从队列的前面(具有最早的插入日期)删除“未售出”的项目。