2014-09-22 64 views
4

我有兩個表,一個用於傳入庫存,另一個用於傳出庫存看起來或多或少是這樣的:計算銷貨成本

   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

如何解決這個問題真的取決於表何時被填充。購買和銷售是否更新,以便每行按時間順序添加?他們是否已經人口稠密,並且齒輪數據是事實? – gwaigh 2014-09-22 16:05:55

+0

銷售和購買表格只是附加到最後的最後。因此,如果我現在要購買另一個滑動杆,它將成爲購買表的最後一行。我描繪貨物計算成本的方式是它將被定義爲一個視圖,因此當您從中選擇時,計算會立即發生。 – zakm 2014-09-22 23:07:44

回答

2

我有一個類似的問題,當客戶從標準成本轉移到FIFO成本覈算庫存。我的解決方案是: 1.在購買表中爲'剩餘數量'添加一列 2.在銷售表中爲'COGS'添加一列 3.修改銷售訂單配送模塊中的代碼以計算基於銷售成本在購買時剩餘的最古老的數量(有時超過一行),同時相應地減少剩餘的數量。 由於所有數據都位於銷售表中,因此查詢變得簡單。