Dear All:
     小弟今被一sql困扰,请高人帮忙指点迷津。
create table test4
(well_id varchar2(10),
prod_date date,
val number);insert into test4 values('A',to_date('2010-6-1','yyyy-mm-dd'),1);
insert into test4 values('A',to_date('2010-6-1','yyyy-mm-dd'),2);
insert into test4 values('A',to_date('2010-6-1','yyyy-mm-dd'),3);
insert into test4 values('A',to_date('2010-6-1','yyyy-mm-dd'),4);insert into test4 values('A',to_date('2010-6-3','yyyy-mm-dd'),5);
insert into test4 values('A',to_date('2010-6-3','yyyy-mm-dd'),6);
insert into test4 values('A',to_date('2010-6-3','yyyy-mm-dd'),7);
insert into test4 values('A',to_date('2010-6-3','yyyy-mm-dd'),8);insert into test4 values('A',to_date('2010-6-5','yyyy-mm-dd'),9);
insert into test4 values('A',to_date('2010-6-5','yyyy-mm-dd'),10);
insert into test4 values('A',to_date('2010-6-5','yyyy-mm-dd'),11);insert into test4 values('A',to_date('2010-7-1','yyyy-mm-dd'),12);
insert into test4 values('A',to_date('2010-7-1','yyyy-mm-dd'),13);
insert into test4 values('A',to_date('2010-7-1','yyyy-mm-dd'),14);commit;
先希望取出 well_id组内,小于输入日期的最近3个日期对应的记录。
例如:A分组内小于2010-7-3的3个日期(2010-7-1 、2010-6-5、2010-6-3) 的所有记录。
小弟sql菜鸟,通过子查询来实现该功能。
但是觉得大家肯定有更简单的方法。还望高手不甚赐教。my sql as followings sucks:select b.* from test4 b
where exists
(select 1 from 
(select well_id,prod_date from 
(select distinct well_id,prod_date from test4
where prod_date <= to_date('2010-7-3','yyyy-mm-dd')
order by prod_date desc) where rownum<=3) a 
where a.well_id = b.well_id and a.prod_date = b.prod_date);