SQL - 使用FIFO和&amp ;;获得销售成本LIFO

时间:2014-10-24 04:51:34

标签: mysql sql

我正在计算销售商品的成本,以便我以后可以将其发布到期刊中。 我的库存卡表如下:

warehouse_product_id    sc_date         qty     price   reserved_qty    left_qty    status
3                       1/12/2014       2       100     0               2           debit
3                       2/12/2014       2       200     0               2           debit
3                       3/12/2014       10      200     0               10          debit

假设我想sell 3 items warehouse_product_id = 3,有人可以告诉我如何查询以下结果:

FIFO(先进先出)

warehouse_product_id    sc_date         qty     price   reserved_qty    left_qty    status
3                       1/12/2014       2       100     0               2           debit
3                       2/12/2014       2       200     0               2           debit

LIFO(后进先出)

warehouse_product_id    sc_date         qty     price   reserved_qty    left_qty    status
3                       3/12/2014       10      200     0               10          debit

另一个例子,我希望sell 5 itemswarehouse_product_id = 3,结果记录应该是这样的:

FIFO(先进先出)

warehouse_product_id    sc_date         qty     price   reserved_qty    left_qty    status
3                       1/12/2014       2       100     0               2           debit
3                       2/12/2014       2       200     0               2           debit
3                       3/12/2014       10      200     0               10           debit

LIFO(后进先出)

warehouse_product_id    sc_date         qty     price   reserved_qty    left_qty    status
3                       3/12/2014       10      200     0               10          debit

问题:

我希望获得行数,如果你总结他们的left_qty它将是>=而不是请求的数量,在上面的例子中是3 and 5。因此,通过使用FIFO,我将分别得到前2行和3行。对于LIFO,我只需要最后一条记录,因为它足以覆盖所请求的数量。

P.S。如果可能,我不想使用Procedure ..

1 个答案:

答案 0 :(得分:1)

您可以创建一个包含每天商品总额的视图:

sc_date       total_sum   reversed_total_sum
1/12/2014     2           14
2/12/2014     4           12
3/12/2014     14          10 

然后您可以轻松选择需要FIFO或LIFO的任何数量的商品。