商品 进货时间      进货数量
A    2010-09-07      230
A    2010-11-12      100
B    2010-09-7       150
B    2010-10-7       80
B    2010-11-12      60
B    2010-12-2       100
B    2011-01-23      30我想得出下面的结果. ---  预测每种商品,每个月的计划进货数量
(逻辑是:前三个月的实际数量的平均值,如果只有二个月数量,则除以2)
商品  月份     实际数量   预测值
A     2010-09  230        0
A     2010-10  0          230/1
A     2010-11  100        230/1
B     2010-09  150        0
B     2010-10  80         150/1
B     2010-11  60         (150+80)/2
B     2010-12  100        (150+80+60)/3
B     2011-01  30         (80+60+100)/3

解决方案 »

  1.   

    create table #(商品 varchar(2),进货时间 varchar(10), 进货数量 int)
    insert into #
    select 'A','2010-09-07', 230 union all
    select 'A','2010-11-12', 100 union all
    select 'B','2010-09-7', 150 union all
    select 'B','2010-10-7', 80 union all
    select 'B','2010-11-12', 60 union all
    select 'B','2010-12-2', 100 union all
    select 'B','2011-01-23', 30 
     
    select 商品, 月份 ,进货数量,预测值/case when 月次数=0 then 1 else 月次数 end from (select 商品,Left(进货时间,7) 月份, 进货数量,isnull((
    select sum(进货数量) from (
    select top 3 进货数量 from # b where b.商品=a.商品 and Left(进货时间,7)<Left(a.进货时间,7) order by  进货时间 desc) as t ),0) '预测值'
    ,(select count(*) from (
    select top 3 进货数量 from # b where b.商品=a.商品 and Left(进货时间,7)<Left(a.进货时间,7) order by  进货时间 desc) as t )'月次数'
    From # a) as t 
      

  2.   

    A 2010-09 230 0
    A 2010-11 100 230
    B 2010-09 150 0
    B 2010-10 80 150
    B 2010-11 60 115
    B 2010-12 100 96
    B 2011-01 30 80