Oracle odpowiednik Postgres DISTINCT ON?
W postgres możesz zapytać o pierwszą wartość w grupie za pomocąDISTINCT ON
. Jak można to osiągnąć w Oracle?
Z podręcznika postgres:
SELECT DISTINCT ON (wyrażenie [, ...]) utrzymuje tylko pierwszy wiersz każdego zestawu wierszy, w którym podane wyrażenia są równe. Wyrażenia DISTINCT ON są interpretowane przy użyciu tych samych reguł, co w przypadku ORDER BY (patrz wyżej). Należy zauważyć, że „pierwszy wiersz” każdego zestawu jest nieprzewidywalny, chyba że ORDER BY jest używany do zapewnienia, że żądany wiersz pojawi się jako pierwszy.
Na przykład dla danej tabeli:
<code> col1 | col2 ------+------ A | AB A | AD A | BC B | AN B | BA C | AC C | CC </code>
Rosnąco sortuj:
<code>> select distinct on(col1) col1, col2 from tmp order by col1, col2 asc; col1 | col2 ------+------ A | AB B | AN C | AC </code>
Malejąco:
<code>> select distinct on(col1) col1, col2 from tmp order by col1, col2 desc; col1 | col2 ------+------ A | BC B | BA C | CC </code>