uid   fee     utime
a    100  2005-10-10
b    223  2005-10-10 
b     240  2005-9-10
b     90   2005-8-10
b     70   2005-7-10
a     70   2005-7-10得到
uid  fee   utime
a    30   2005-10-10(2005-10-10的fee减2005-7-10的fee)
b    -17   2005-10-10(2005-10-10的fee减2005-9-10的fee)得到相同uid的相邻时间的fee的差谢谢

解决方案 »

  1.   

     select id,fee-lead(fee,1) over(partition by id order by utime desc) from t;
      

  2.   

    select   id,fee-lead(fee,1)   over(partition   by   id   order   by   utime   desc)   from   t;
    这个语句得到的应该不止两条记录!!uid 为b 的记录应该会有多条吧?
    楼主给个答案,学习中...
      

  3.   

    select tt.uid,sum(case tt.rn when 1 then fee when 2 then fee*-1 else 0 end)
    from
    (
    select *,row_number() over(partition by uid order by utime desc) as rn 
    from  t
    ) tt
    group by tt
    不知行不行!