SELECT * FROM `table` ORDER BY `date` DESC LIMIT 3
alter session set nls_date_format = 'dd/mm/yyyy HH:MI:SS';
SELECT SEQUENCE#,
FIRST_TIME
FROM
(
SELECT SEQUENCE#,
FIRST_TIME
FROM
krono_test
WHERE
trunc(FIRST_TIME) = trunc(SYSDATE)
ORDER BY FIRST_TIME DESC
)
WHERE rownum <=3;
SEQUENCE# FIRST_TIME
---------- -------------------
2318 22/04/2008 07:43:46
2317 22/04/2008 06:18:03
2316 22/04/2008 04:56:51
create table unique_ids
(unique_id number)
;
create table dates
(unique_id number,
date_field date)
;
SELECT *
FROM
(SELECT unique_id, date_field, row_number()
OVER (PARTITION BY unique_id ORDER BY date_field) next_dates
FROM dates
WHERE trunc(date_field) >= trunc(sysdate)
)
WHERE next_dates <= 3
Thanks for your efforts chaps, however I still can't get this to work.
Using the example above, each 'sequence#' will need to return 3 'first_time' records. There are more than 3 'first_time' records per 'sequence#', so I'm returning the first three closest to today.
Does that make sense??