Предполагая, что вам нужна первая строка для каждого CODE
, который имеет самую последнюю UPDATED_DATE
, вы можете использовать аналитическую функцию ROW_NUMBER()
:
Oracle Setup :
CREATE TABLE table_name ( ID, "DATE", UPDATED_DATE, CODE ) AS
SELECT 123, DATE '2019-02-01', NULL, 987 FROM DUAL UNION ALL
SELECT 456, DATE '2019-01-01', DATE '2019-04-02', 654 FROM DUAL UNION ALL
SELECT 789, DATE '2019-01-01', NULL, 654 FROM DUAL;
Запрос :
SELECT ID, CODE
FROM (
SELECT t.*,
ROW_NUMBER()
OVER ( PARTITION BY code
ORDER BY UPDATED_DATE DESC NULLS LAST ) AS rn
FROM table_name t
)
WHERE rn = 1;
Вывод :
ID | CODE
--: | ---:
456 | 654
123 | 987
дБ<> скрипка здесь