一个极度复杂的递归问题,高手请进....................................
财务方面的成本结算方法(加权平均法) 
 有一个表   #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 '