Sql 计算销售商品的成本
我有两个表,一个用于输入库存,另一个用于输出库存,大致如下所示:Sql 计算销售商品的成本,sql,postgresql,accounting,Sql,Postgresql,Accounting,我有两个表,一个用于输入库存,另一个用于输出库存,大致如下所示: purchase (incoming) --------------+----------+-------+----------- inventory_id | quantity | price | timestamp --------------+----------+-------+----------- bobble | 1 | $1.00 | 2014-01-0
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
--------------+----------+-------------+------------+-----------+-----------+----------
我希望有一个这样的视图:
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
--------------+----------+-------------+------------+-----------+-----------+----------
我可以处理销售商品的总价格和平均成本,但先进先出和后进先出的查询让我感到痛苦
这是合理的还是可能的?任何帮助都将不胜感激。当一位客户将存货的标准成本计算改为先进先出成本计算时,我遇到了类似的问题。我的解决办法是: 1.在采购表中添加“剩余数量”列 2.将列添加到“COGS”的销售表中 3.修改“销售订单发货”模块中的代码,以根据采购中最早的剩余数量(有时超过一行)计算COG,同时相应减少剩余数量。
查询变得简单,因为所有数据都位于sales表中。如何解决这一问题实际上取决于何时填充表。采购和销售是否正在更新,以便按时间顺序添加每一行?它们是否已经填充并且cogs数据在事实之后?sale和purchase表只是附加在后面,最新的在末尾。因此,如果我现在再买一个筒子,它将成为购买表的最后一行。我描述货物成本计算的方式是,它将被定义为一个视图,因此当您从中选择时,计算将在运行中进行。