日期:2014-05-18  浏览次数:20489 次

一个极度复杂的递归问题,高手请进....................................
财务方面的成本结算方法(加权平均法)
有一个表   #t   如下:
产品id     产品名称     期初库存   单价     日期
  1                 aa               100             5         2007-1-1
有一个表   #p   如下:
产品id     产品名称     购进数量   单价     日期
  1                 aa               10               5         2007-1-2
  1                 aa               20               6         2007-1-10
  1                 aa               5                 7         2007-2-10  
  1                 aa               10               6         2007-2-20  
有一个表   #m   如下:
产品id     产品名称     销售数量   单价     日期
  1                 aa               5               8       2007-1-3
  1                 aa               10             8       2007-1-11
  1                 aa               10             9       2007-2-5
  1                 aa               5               8       2007-2-22
1月份的销售成本=(5+10)*(100*5+10*5+20*6)/(100+10+20)=15*5.15
1月末的库存数量=100+10+20-5-10=115
1月末的库存单价=(100*5+10*5+20*6)/(100+10+20)=5.15
2月份的销售成本=(10+5)*(115*5.15+5*7+10*6)/(115+5+10)=15*5.28
2月末的库存数量=115+5+10-10-5=115  
2月末的库存单价=(115*5.15+5*7+10*6)/(100+5+10)=5.28
依次类推
3月末的库存单价=(2月末库存单价*2月末库存数量+3月购进数量*3月购进单价)/
(     2月末库存数量+3月购进数量)    
3月末的库存数量=2月末库存数量+3月购进数量-3月销售数量
3月份的销售成本=3月销售数量*3月末的库存单价
请问世这样的期末库存,库存单价,销售成本用什么方法得到

------解决方案--------------------
可以做过存储过程
建议先建立一个临时表,保存上个月计算的结果,

create table #t(产品id int, 产品名称 nvarchar(10), 期初库存 int , 单价 numeric(10,4) , 日期 datetime)
insert into #t select 1 , 'aa ', 100 , 5 , '2007-1-1 '
create table #p (产品id int , 产品名称 nvarchar(10), 购进数量 int , 单价 numeric(10,4) , 日期 datetime)
insert into #p select 1 , 'aa ' , 10 , 5 , '2007-1-2 '
union select 1 , 'aa ' , 20 , 6 , '2007-1-10 '
union select 1 , 'aa ' , 5 , 7 , '2007-2-10 '
union select 1 , 'aa ' , 10 , 6 , '2007-2-20 '
create table #m (产品id int , 产品名称 nvarchar(10), 销售数量 int , 单价 numeric(10,4) , 日期 datetime)
insert into #m select 1 , 'aa '