ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE中距离某日期最近的记录的查询

ORACLE中距离某日期最近的记录的查询

原创 Linux操作系统 作者:Kneeland 时间:2010-07-12 11:18:24 0 删除 编辑

    在做项目的时候经常会用到距离某日期最近的记录,既然是记录,那么查询出的酒不会单单是日期和进行分组的某字段,那么这个时候就需要进行表和自身的关联,但是当多个表之前进行关联,而且每个表都要与自身进行关联时就会造成查询速度慢等问题。那么应当如何才能减少表与表之间的关联,进而提高查询速度呢?

举个例子如下:

(1)创建表

-- Create table

create table EXAMPLE

(

  XH NUMBER(10) not null,

  NY VARCHAR2(6) not null

);

-- Add comments to the columns 

comment on column EXAMPLE.XH

  is '序号';

comment on column EXAMPLE.NY

  is '年月';

-- Create/Recreate primary, unique and foreign key constraints 

alter table EXAMPLE

  add constraint EXAMPLE_XH_NY primary key (XH, NY)

  using index; 

(2)插入12条记录:

insert into EXAMPLE (XH, NY)

values (1, '201001');

insert into EXAMPLE (XH, NY)

values (1, '201002');

insert into EXAMPLE (XH, NY)

values (1, '201003');

insert into EXAMPLE (XH, NY)

values (1, '201004');

insert into EXAMPLE (XH, NY)

values (1, '201005');

insert into EXAMPLE (XH, NY)

values (1, '201006');

insert into EXAMPLE (XH, NY)

values (1, '201007');

insert into EXAMPLE (XH, NY)

values (1, '201008');

insert into EXAMPLE (XH, NY)

values (1, '201009');

insert into EXAMPLE (XH, NY)

values (1, '201010');

insert into EXAMPLE (XH, NY)

values (1, '201011');

insert into EXAMPLE (XH, NY)

values (1, '201012');

commit;

如下图所示:

(3)查询序号为1,2010年8月之前最大的记录,查询结果我们知道是xh为1,ny为201008,那么相应的sql语句应当怎么写比较简单呢?

Select xh as 序号,ny as 年月 from (select * from example order by ny desc) where xh=1 and ny<='201008' and rownum=1;

查询结果为:

问题得以解决。

新的查询结果0709.JPG

查询结果0709.JPG

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21331312/viewspace-667777/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 神奇的sql语句
请登录后发表评论 登录
全部评论

注册时间:2009-04-08

  • 博文量
    7
  • 访问量
    36604