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

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

举个例子如下:

(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;

如下图所示:

21331312_201007121127012.jpg

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

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

查询结果为:

21331312_201007121127011.jpg

问题得以解决。

fj.png新的查询结果0709.JPG

fj.png查询结果0709.JPG

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

转载于:http://blog.itpub.net/21331312/viewspace-667777/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值