永久加权平均成本计算 SQL Server 2008

Posted

技术标签:

【中文标题】永久加权平均成本计算 SQL Server 2008【英文标题】:Perpetual Weighted Average cost Calculation SQL Server 2008 【发布时间】:2013-01-22 07:22:11 【问题描述】:

我想计算库存的永久加权平均成本。我试图了解以下链接的解决方案 Inventory Average Cost Calculation in SQL 但无法得到它,这对我来说很复杂。

这是我的数据库详细信息。

Purch_ID  Item_ID   QTY    Unit_Price   

 01         1       10       10               
 02         2       10       20               
 03         3       20       15              
 04         2       10       20               
 05         1       10       18              
 06         2       25       17      

我想使用以下公式计算每次购买后的加权平均成本

((old_stock x Old unit price)+(New_Purchase_qty x New unit price))/(old stock qty + new purchase qty)

有什么建议吗?

【问题讨论】:

【参考方案1】:

如果我理解正确,你想要的是累计平均价格。

这种方法使用子查询来计算累计总数量和累计支付总额。该比率是平均成本:

select t.*, cumepaid / cumeqty as avg_cost
from (select t.*,
             (select SUM(qty) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumeqty,
             (select SUM(qty*unit_price) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumepaid
      from t
     ) t

在 SQL Server 2012 中,您可以通过直接计算累积和来做到这一点(应该更有效)。您也可以使用 cross apply 来执行此操作,但我更喜欢标准 SQL。

【讨论】:

以上是关于永久加权平均成本计算 SQL Server 2008的主要内容,如果未能解决你的问题,请参考以下文章

非正常情况下的移动加权平均算法

计算产品库存的加权平均成本

SQL - 计算产品的累积平均成本价

计算相关性/加权算术平均 SQL

基于买卖的加权平均收购成本熊猫

sap制造业成本核算流程(转自互联网)