В postgres вы можете запросить первое значение в группе с DISTINCT ON
. Как это можно достичь в Oracle?Oracle эквивалент Postgres 'DISTINCT ON?
В руководстве 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
+1: The 'FIRST_VALUE()' вариант вполне умное моделирование 'DISTINCT ON'. Я должен построить это в [jOOQ] (http://www.jooq.org) –
Как применить это, если я хочу DISTINCT из 2 полей и соответствующих значений из всех других полей? – tumchaaditya