因为 需要当前记录的一个字段的值 和前一条记录的这个字段的值 进行比较
  所以 
  求获取当前记录的 前一条记录 和后一条句路的 查询语句
  该表的ID 已经确定为连续增长的 不会出现不连续的情况
  难点 是不要用变量,自定义函数之类的
  希望大家帮帮忙 

解决方案 »

  1.   

    select 
    case when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              >         
              (--前一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id --注意这里是id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )-1
              )
         then '当前记录某字段>前一条记录某字段'    
         when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              =         
              (--前一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )-1
              )
         then '当前记录某字段=前一条记录某字段'   
         when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              <         
              (--前一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )-1
              )
         then '当前记录某字段<前一条记录某字段'
    else '前一条某字段为空'     
    end 和前一条比较,
    case when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              >         
              (--后一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )+1
              )
         then '当前记录某字段>前一条记录某字段'    
         when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              =         
              (--后一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )+1
              )
         then '当前记录某字段=前一条记录某字段'   
         when (--当前记录
               select p.colname
               from yourtablename p
               where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
              )
              <         
              (--后一条记录
               select p.colname
              from yourtablename p
              where id=(select p.id
                       from yourtablename p
                       where id=1 --能确定查询到一条记录的条件,而这条记录要是你所谓的当前记录
                       )+1
              )
         then '当前记录某字段<前一条记录某字段'
    else '后一条某字段为空'          
    end 和后一条比较          
    from dual;       这个应该可以用了,测试过的,改一下表明和字段名还有条件就可以了。
      

  2.   

    Lead函数是不是可以帮到你呢?
      

  3.   

    select * from table t where t.rowid=(select rowid-1 rowid from table where ...);
    这样行不行?
      

  4.   

    rowid-1?我蛮佩服楼上的。可以想到这个。
    是不是错的离谱了点?