根据日期从数据库中取11条数据,比如日期为2007-11-06 得到的数据应该为11-01----11-11。但如果11-06前的数据不够5条的话就得向下多取一条(11-02------11-12)反之,向下的数据不够就向上取,如果向上向下都不够,那也没办法,取出所有就是了。

解决方案 »

  1.   

    lead() 和lag()函数select * from tablename a,
      (select * from
        (select t.*,
        lag (to_char(datetime),5) over  (order by datetime) as time1 --取得上第五条datatime的值time1.
        lead(to_char(datetime),5) over  (order by datetime) as time2 --取得下第五条datatime的值time2.
        from tablename t) t1   where datetime=2007-11-06  --只取datetime='2007-11-06' 的记录的time1,time2
      )b
    where a.datetime>b.time1 and a.datetime<time2实现得不知对不对!!!
    思路是先用lead() 和lag()解析函数求tablename中每个datetime的前,后第五个值(前,列名为time1,后,列名为time2)
    然后取datetime='2007-11-06' 的那行记录中的time1,time2,
    再以time1,time2 为条件查询表