本帖最后由 maoweiting19910402 于 2012-04-13 16:03:23 编辑

解决方案 »

  1.   

    大概是这个题目
    create table B
    (
    name number,
    what   varchar(20),
    place  varchar(20),
    tim    date,
    money  number,
    last   number,
    primary key(name,place,tim)
    )SQL> select * from B;
     
          NAME WHAT                 PLACE                TIM              MONEY   Last
    ---------- -------------------- -------------------- ----------- ----------  ----------
             1 1                    超市                 2012/4/13           12
             1 1                    超市                 2012/4/11           13
             1 0                    超市                 2012/4/10           14
             2 1                    学校                 2012/4/7            16
             2 1                    学校                 2012/4/16           31
             2 1                    学校                 2012/4/26           12
     
    6 rows selected
    是某人去某地买东西last=前面一个日期在同一个地方买的东西的钱,不为0不为空的数据,what=0的数据不算在内
      

  2.   

    使用LAG+开窗函数,可以查到你要求的数据。UPDATE语法不熟,你自己搞定吧。select name,what,place,tim,money,lag(money)over(partition by name,place order by name,tim) as last from 
    (
    select '1' as name,'1' as what,'超市' as place,sysdate  as tim, 12 as money from dual
    union all
    select '1' ,'1' ,'超市',sysdate-1, 15  from dual
    union all
    select '1' ,'0' ,'超市',sysdate+1, 25  from dual
    union all
    select '2' ,'1' ,'学校',sysdate, 35  from dual
    union all
    select '2' ,'1' ,'学校',sysdate-1, 45  from dual
    union all
    select '2' ,'1' ,'学校',sysdate-2, 55  from dual)
    where what = '1'
    --结果
    NAME WHAT PLACE TIM                       MONEY                  LAST                   
    ---- ---- ----- ------------------------- ---------------------- ---------------------- 
    1    1    超市  2012-04-12 16:47:30       15                                            
    1    1    超市  2012-04-13 16:47:30       12                     15                     
    2    1    学校  2012-04-11 16:47:30       55                                            
    2    1    学校  2012-04-12 16:47:30       45                     55                     
    2    1    学校  2012-04-13 16:47:30       35                     45