В postgres вы можете запросить первое значение в группе с помощью DISTINCT ON
. Как это можно достичь в Oracle?
В руководстве postgres:
SELECT DISTINCT ON (выражение [,...]) содержит только первую строку каждый набор строк, где данные выражения оцениваются равными. Выражения DISTINCT ON интерпретируются с использованием тех же правил, что и для ORDER BY (см. Выше). Обратите внимание, что "первая строка" каждого набора непредсказуемый, если ORDER BY не используется, чтобы гарантировать, что желаемая строка появляется первым.
Например, для данной таблицы:
col1 | col2
------+------
A | AB
A | AD
A | BC
B | AN
B | BA
C | AC
C | CC
Сортировка по возрастанию:
> select distinct on(col1) col1, col2 from tmp order by col1, col2 asc;
col1 | col2
------+------
A | AB
B | AN
C | AC
Убывающая сортировка:
> select distinct on(col1) col1, col2 from tmp order by col1, col2 desc;
col1 | col2
------+------
A | BC
B | BA
C | CC