表TB(姓名,当前余额,日期)
   张三,1000,20110101
   张三,1500,20110105
   张三,500 , 20110110
最终实现的表是:姓名,当前余额,日均余额.
难点在于:虽然2,3,4日没有当前余额,可是只是说明这几日的余额没有变化,一直保持为1000,而5日加了500元,从6日到9日一直为1500这个数,而到了10日,余额变为了500,那么在该日期段内的日均余额应该为:(1000*4+1500*5+500)/10.
而当前余额应该为500元,有什么实现的好办法?

解决方案 »

  1.   

    想sql语句实现?
    还是在程序里实现吧,要不就写存储过程
      

  2.   


    你要求日均余额应该不难吧,算出每天余额之和,然后求平均数:avg(Count(当天余额))。
      

  3.   

    这玩意儿貌似用单条的sql不太容易,function或者Stored Procedure好一些
      

  4.   


    declare @date int
    select @date = max([日期]) from TB where [姓名]='张三'
    declare @total int
    declare @i int
    declare @count int
    declare @datetime int
    set @count=1
    select @total=[当前余额],@i=[当前余额],@datetime=[日期] from TB where  [日期]=(select Min
    ([日期]) from TB where [姓名]='张三' )while(@datetime < @date)
    begin
    set @datetime=@datetime+1
    if(exists(select 1 from TB where [姓名]='张三' and [日期]=@datetime))
    select @i= [当前余额] from TB where [姓名]='张三' and [日期]=@datetime
    set @total=@total+@i
    set @count =@count+1
    end
    select [姓名]='张三',[当前余额]=@i,[日均余额]=@total/@count/*
    姓名   当前余额        日均余额
    ---- ----------- -----------
    张三   500         1200
    */