关于库存成本移动加权平均的问题

new4everlau 2018-02-08 01:53:56
有一个表,其中包含所有出、入库记录,为了简化,我将这个表简化为不区分物料(也就是假设就一种),但是此表的所有出库成本单价全部为空,求一个SQL,完成所有出库成本单价和成本的更新语句。
成本采用移动加权平均算法。
谢谢。
InOrOut Date Qty UnitCost Cost
1 2017-09-01 100 23.00 2300.00
1 2017-09-10 400 22.50 9000.00
-1 2017-09-12 300 NULL NULL
1 2017-09-20 200 22.00 4400.00
-1 2017-09-25 300 NULL NULL
1 2017-09-30 333 20.00 6660.00
...全文
3343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
acen_chen 2018-02-11
  • 打赏
  • 举报
回复
写个过程遍历一下更新吧
firer2006 2018-02-09
  • 打赏
  • 举报
回复
数据列没有主键,默认数据是按日期排序生成一个标识列 alter table table_1 add flow int IDENTITY(1,1) DECLARE @flow varchar(100) DECLARE authors_cursor CURSOR FOR Select date from table_1 where UnitCost is null order by flow OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @flow WHILE @@FETCH_STATUS = 0 BEGIN update table_1 set UnitCost=(select sum(Cost*InOrOut)/SUM(qty*InOrOut) from table_1 where flow<@flow) where flow=@flow update table_1 set Cost=UnitCost*Qty where flow=@flow FETCH NEXT FROM authors_cursor INTO @flow END close authors_cursor DEALLOCATE authors_cursor
new4everlau 2018-02-08
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
楼主给的是测试数据吗? 结果是什么样的?基本计算规则
是测试数据 基本规则就是移动加权平均算法,解释如下: InOrOut Date Qty UnitCost Cost 1 2017-09-01 100 23.00 2300.00 1 2017-09-10 400 22.50 9000.00 -1 2017-09-12 300 A1 B1 --上面2条记录入库,其成本单价为(2300+9000)/(100+400) = 22.6,所以这条的出库成本单价A1 = 22.6,B1 = 300*22.6=6780 1 2017-09-20 200 22.00 4400.00 -1 2017-09-25 300 A2 B2 --此条出库成本单价为:上面结余成本/当前库存,即A2 = (2300+9000-6780+400)/(100+400-300+200) = 8920/400 = 22.3,B2 = 6690 1 2017-09-30 333 20.00 6660.00
日月路明 2018-02-08
  • 打赏
  • 举报
回复
最直接的做法,从第一条记录开始便利,按成本价=(当前库存*当前成本价+入库数量*入库价格)/(当前库存+入库数量)
二月十六 2018-02-08
  • 打赏
  • 举报
回复
楼主给的是测试数据吗? 结果是什么样的?基本计算规则
进销存系统 需 求 说 明 书 作者: 完成日期: 审核人: 审核日期: 批准日期: XXXX公司 目录 第一章: 客户群体 4 第二章: 客户的信息化现状及市场办公系统现状 4 第三章: 软件的应用范围 4 第四章: 软件部署后的运行环境描述 4 第五章: 软件的性能要求 4 第六章: 软件的稳定性要求 4 第七章: 软件的扩展性要求 4 第八章: 软件支撑平台的要求 4 第九章: 软件的业务功能要求 5 9.1 建立帐套 5 9.2 录入基础资料 5 9.2.1 客户档案 5 9.2.2 员工档案 6 9.2.3 仓库档案 6 9.2.4 资金帐户 6 9.2.5 其他费用支出项目 6 9.2.6 其他收入项目 7 9.2.7 常用商品档案 7 9.3 录入建帐期初数据 7 9.3.1 期初商品库存 7 9.3.2 期初应付款 8 9.3.3 期初应收款 8 9.3.4 期初现金银行 8 9.3.5 期初借入款余额 8 9.3.6 期初借出款余额 8 9.4 进货管理 8 9.4.1 进货管理 8 9.4.2 收付款 11 9.5 销售管理 16 9.5.1 销售管理 16 9.5.2 收退款 19 9.6 存货管理 23 9.6.1 商品库存 23 9.6.2 其他方式入库 24 9.6.3 其他方式出库 24 9.6.4 仓库调拨 24 9.6.5 盘点盈余 24 9.6.6 盘点亏损 25 9.6.7 组装与拆卸 25 9.7 财务管理 26 9.7.1 现金银行 26 9.7.2 银行存取 26 9.7.3 其他收入 26 9.7.4 其他费用支出 26 9.7.5 对外借款(借入) 27 9.7.6 对外借款(借出) 27 第十章: 查询及报表 27 第十一章: 系统管理 27 第十二章: 参考资料 27 第一章:客户群体 第二章:客户的信息化现状及市场办公系统现状 第三章:软件的应用范围 第四章:软件部署后的运行环境描述 硬件环境: 操作系统: 应用服务器: 数据库: 第五章:软件的性能要求 第六章:软件的稳定性要求 第七章:软件的扩展性要求 短期内用户的增加速度会很快,这样一方面在考虑用户服务器的负载能力,另一方面要考虑网络的带宽。 第八章:软件支撑平台的要求 网络环境: 服务器端: 客户端: 硬件环境: 服务器: 高性能专用数据库服务器和程序运行服务器。 操作系统: 服务器: 数据库: 第九章:软件的业务功能要求 进销存业务总体流程图: 9.1 词汇解释  加权平均加权平均法,亦称全月一次加权平均法,是指以当月全部进货数量加上月初存货数量作为权数,去除当月全部进货成本加上月初存货成本,计算出存货的加权平均单位成本,以此为基础计算当月发出存货的成本和期末存货的成本的一种方法。 存货的加权平均单位成本=(月初结存货成本+本月购入存货成本)/(月初结存存货数量+本月购入存货数量) 月末库存存货成本=月末库存存货数量×存货加权平均单位成本 本期发出存货的成本=本期发出存货的数量×存货加权平均单位成本 或 =期初存货成本+本期收入存货成本-期末存货成本 加权平均法,在市场预测里,就是在求平均数时,根据观察期各资料重要性的不同,分别给以不同的权数加以平均的方法。  其特点是:所求得的平均数,已包含了长期趋势变动。  加权平均法的优缺点:  优点:计算方法简单。  缺点:不利于核算的及时性;在物价变动幅度较大的情况下,按加权平均单价计算的期末存货价值与现行成本有较大的差异。适合物价变动幅度不大的情况。  A鸡蛋34元一个,买了10个,B鸡蛋买了45元一个,买了20个,问买了A鸡蛋和B鸡蛋的平均价格是多少?  这时肯定不能用算术平均,直接(34+45)/2,因为他们买的数量不一样,因此要计算他们的平均价格,只能用所买的数量作为权数,进行加权平均:  (34×10+45×20)/(10+20)= 1240 /30 = 41.33元/个  移到加权平均移动加权平均法,是指以每次进货的成本加上原有库存存货的成本,除以每次进货数量与原有库存存货的数量之和,据以计算加权平均单位成本,以此为基础计算当月发出存货的成本和期末存货的成本的一种方法. 移动加权平均法: 移动加权平均法下库存商品的成本价格根据每次收入类单据自动加权平均;其计算方法是以各次收入数量和金额与各次收入前的数量和金额为基础,计算出移动加权平均单价。其计算公式如下: 移动加权平均单价= (本次收入前结存商品金额+本次收入商品金额)/(本次收入前结存商品数量+本次收入商品数量 ) 移动加权平均法计算出来的商品成本比较均衡和准确,但计算起来的工作量大,一般适用于经营品种不多、或者前后购进商品的

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧