库存加权平均成本

Justin_chen 2015-11-27 10:44:31
请求各位大大,


我现在有一个库存交易记录表,里面的数据大概如下,我想根据这个表还算出加权平均成本,结余数量,及结余数金额,

每月运行一次,然后将数据写入另一个表中,表结构如下,最后一条记录做为下一个月的期初数。

类型 数量 单价 金额 加权平均成本 结余数量 结余金额
入库 150 11.00 1,650.00 11.00 =1650/150 150 1,650.00
出库 -60 11.00 -660.00 11.00 =(1650+660)/(150-60) 90 990.00
入库 30 12.00 360.00 11.25 =(1650-660+360)/(150-60+30) 120 1,350.00
入库 50 13.00 650.00 11.76 =(1650-660+360+650)/(150-60+30+50) 170 2,000.00
出库 -60 11.76 -705.88 11.76 =(1650-660+360+650-705.88)/(150-60+30+50-60) 110 1,294.12


在线等待,谢谢各位大大。
...全文
129 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zbdzjx 2015-11-27
with table1 as
(
select '2015/11/01' 日期, '入库' 类型, 150 数量, 11.00 单价, 1650.00 金额 union all
select '2015/11/02' 日期, '出库' 类型, -60 数量, 11.00 单价, -660.00 金额 union all
select '2015/11/03' 日期, '入库' 类型,  30 数量, 12.00 单价,  360.00 金额 union all
select '2015/11/04' 日期, '入库' 类型,  50 数量, 13.00 单价,  650.00 金额 union all
select '2015/11/05' 日期, '出库' 类型, -60 数量, 11.76 单价, -705.88 金额
)
select 类型, 数量, 单价, 金额
, round((select case when SUM(数量) <> 0 then SUM(金额)/SUM(数量) end from table1 b where b.日期<=a.日期), 2) 加权平均成本
, (select SUM(数量) from table1 b where b.日期<=a.日期) 结余数量
, (select SUM(金额) from table1 b where b.日期<=a.日期) 结余金额
from table1 a
回复
zhll2046 2015-11-27
create table #T (
ID INT Identity,
类型 nvarchar(10),
数量 int,
单价 money,
金额 money
)

insert into #T
select N'入库',    150,    11.00,   1650.00  
union all                               
select N'出库',    -60,    11.00,    -660.00  
union all
select N'入库',    30,     12.00,    360.00   
union all
select N'入库' ,   50,    13.00 ,   650.00  
union all
select N'出库',   -60,    11.76 ,   -705.88  
  
SELECT * FROM #T t
CROSS APPLY
(
SELECT CAST(SUM(金额)/SUM(数量) AS DECIMAL(18,2)) AS [加权平均成本], SUM(数量) AS 结余数量, SUM(金额) AS 结余金额
FROM #T WHERE t.id>=id
) cat
 
回复
Yole 2015-11-27
我看您的测试数据,单价那列其实就是加权平均价了。因为出库的时候用的都是加权平均价出库的,而不是售价。 如果单价记录的是进价和售价的话,加权平均价的计算就需要用sum(购进价*购进数量)/sum(购进数量)来计算了。
回复
Yole 2015-11-27

create table #a (
类型 varchar(10),
数量 int,
单价 dec(18,2),
金额 dec(18,2)
)
insert into #a
select '入库',    150,    11.00,   1650.00  
union all                               
select '出库',    -60,    11.00,    -660.00  
union all
select '入库',    30,     12.00,    360.00   
union all
select '入库' ,   50,    13.00 ,   650.00  
union all
select '出库',   -60,    11.76 ,   -705.88  


select sum(金额)/sum(数量) as'加权平均成本' ,  sum(数量) as '结余数量',sum(金额) as '结余金额' from #a

加权平均成本           结余数量        结余金额
------------------ ---------------------------------------
11.764727              110              1294.12

(1 行受影响)


回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-27 10:44
社区公告
暂无公告