Oracle: показать отчетливый порядок - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть эта таблица

FLIGHT  ROW_NUMBER ORIGIN  DESTINATION
--------------------------------------------------
1111      1        LAX        MIA
1111      2        MIA        SCL 
1111      3        MIA        SCL 
1111      4        SCL        ARG
1111      5        SCL        ARG
1111      6        SCL        ARG
1111      7        SCL        ARG

Мне нужно сохранить DISTINCT, но в том же порядке, в котором они появляются

FLIGHT  ROW_NUMBER ORIGIN  DESTINATION
--------------------------------------------------
1111      1        LAX        MIA
1111      2        MIA        SCL 
1111      3        SCL        ARG

1 Ответ

1 голос
/ 06 февраля 2020

Вот один вариант; строки № 1 - 9 представляют образцы данных (вам не нужно их вводить). Остальное использует подзапрос, который - используя group by (из-за функции min) - возвращает различные значения. Row_number analyti c Функция просто отображает порядковые номера для окончательного результата.

Если вы не хотите переупорядочивать их, подзапрос будет делать (но тогда вы получите порядковые номера 1, 2, 4 для данных выборки).

SQL> with test (flight, rn, origin, destination) as
  2    (select 1111, 1, 'LAX', 'MIA' from dual union all
  3     select 1111, 2, 'MIA', 'SCL' from dual union all
  4     select 1111, 3, 'MIA', 'SCL' from dual union all
  5     select 1111, 4, 'SCL', 'ARG' from dual union all
  6     select 1111, 5, 'SCL', 'ARG' from dual union all
  7     select 1111, 6, 'SCL', 'ARG' from dual union all
  8     select 1111, 7, 'SCL', 'ARG' from dual
  9    )
 10  select flight,
 11         row_number() over (partition by flight order by rn) rn,
 12         origin,
 13         destination
 14  from (select flight,
 15               min(rn) rn,
 16               origin,
 17               destination
 18        from test
 19        group by flight, origin, destination
 20       )
 21  order by flight, rn;

    FLIGHT         RN ORI DES
---------- ---------- --- ---
      1111          1 LAX MIA
      1111          2 MIA SCL
      1111          3 SCL ARG

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...