我有两个表,一个用于传入库存,另一个用于外观库存,或多或少看起来像这样:
purchase (incoming)
--------------+----------+-------+-----------
inventory_id | quantity | price | timestamp
--------------+----------+-------+-----------
bobble | 1 | $1.00 | 2014-01-01
trinket | 2 | $1.00 | 2014-01-02
trinket | 2 | $2.00 | 2014-01-03
--------------+----------+-------+-----------
sale (outgoing)
--------------+----------+-------+-----------
inventory_id | quantity | price | timestamp
--------------+----------+-------+-----------
trinket | 1 | $3.00 | 2014-01-04
bobble | 1 | $3.00 | 2014-01-05
trinket | 2 | $3.00 | 2014-01-06
trinket | 1 | $3.00 | 2014-01-07
--------------+----------+-------+-----------
我希望有一个看起来像这样的视图:
sale_with_cost_of_goods
--------------+----------+-------------+------------+-----------+-----------+----------
inventory_id | quantity | total_price | timestamp | cogs_fifo | cogs_lifo | cogs_avg
--------------+----------+-------------+------------+-----------+-----------+----------
trinket | 1 | $3.00 | 2014-01-04 | $1.00 | $2.00 | $1.50
bobble | 1 | $3.00 | 2014-01-05 | $1.00 | $1.00 | $1.00
trinket | 2 | $6.00 | 2014-01-06 | $3.00 | $3.00 | $3.00
trinket | 1 | $3.00 | 2014-01-07 | $2.00 | $1.00 | $1.50
--------------+----------+-------------+------------+-----------+-----------+----------
我可以处理所售商品的总价格和平均成本,但FIFO和LIFO查询在我痛苦的地方踢我。
这是合理的还是可能的?任何帮助将不胜感激。
答案 0 :(得分:2)
当客户从标准成本核算转移到库存的FIFO成本核算时,我遇到了类似的问题。我的解决方案是: 1.在购买表中添加一列“剩余数量” 2.在销售表中为“COGS”添加一列 3.修改销售订单发货模块中的代码,以根据购买时最早的剩余数量(有时多于一行)计算COGS,同时相应地减少剩余数量。 然后查询变得简单,因为所有数据都位于销售表中。