drop table daterank;
create table daterank (item varchar2(10), schedule varchar2(20), sdate date, status number);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-07-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-06-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-05-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-04-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-03-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 4);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 0);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 5);
insert into daterank values ('a', 'as1', to_date('2011-02-10', 'YYYY-MM-DD'), 4);
select distinct item, schedule, sdate from daterank order by sdate desc;
ITEM SCHEDULE SDATE
---------- -------------------- ---------
a as1 10-JUL-11
a as1 10-JUN-11
a as1 10-MAY-11
a as1 10-APR-11
a as1 10-MAR-11
a as1 10-FEB-11
select item, schedule, sdate, max(status)
from
(select item, schedule, status, sdate, dense_rank() over (partition by item, schedule order by sdate desc) as rn
from daterank)
where rn<=5
group by item, schedule, sdate
order by item, schedule, sdate desc;
ITEM SCHEDULE SDATE MAX(STATUS)
---------- -------------------- --------- -----------
a as1 10-JUL-11 5
a as1 10-JUN-11 5
a as1 10-MAY-11 5
a as1 10-APR-11 5
a as1 10-MAR-11 5