Хотя решение @ Nik может работать в ситуациях, когда нет никаких связей для значений MAX(date)
(или не имеет значения, какое значение связи выбрано и генерирует ли это несколько выходных строк), альтернативным подходом является группировка все записи по ID
сортируют все записи, принадлежащие одной группе, по date
в порядке убывания, а затем выбирают самую первую строку результатов для каждой группы.
Этого можно добиться с помощью стандартной оконной функции SQL ROW_NUMBER()
, например:
SELECT ID, NAME, DATE
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY ID
ORDER BY DATE DESC) RN
, ID
, NAME
, DATE
FROM <TABLE_NAME>
)
WHERE RN = 1;