Oracle - генерировать порядковый номер по группам - PullRequest
0 голосов
/ 19 июня 2020

Мне нужно сгенерировать порядковый номер / последовательность группы внутри оператора выбора для группы данных. Например,

Group   Name   Sequence
1       a      1
1       b      2
1       c      3
2       d      1
2       e      2
2       f      3

Таким образом, для каждой группы последовательность должна быть порядковым номером, начиная с 1, в зависимости от порядка столбца «Имя». Я уже играл с Row_Number () и Level, но не смог найти решения. Есть идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Analyti c справка по функциям.

SQL> with test (cgroup, name) as
  2    (select 1, 'a' from dual union all
  3     select 1, 'b' from dual union all
  4     select 1, 'c' from dual union all
  5     select 2, 'd' from dual union all
  6     select 2, 'e' from dual union all
  7     select 2, 'f' from dual
  8    )
  9  select cgroup,
 10         name,
 11         row_number() over (partition by cgroup order by name) sequence
 12  from test
 13  order by cgroup, name;

    CGROUP N   SEQUENCE
---------- - ----------
         1 a          1
         1 b          2
         1 c          3
         2 d          1
         2 e          2
         2 f          3

6 rows selected.

SQL>
0 голосов
/ 19 июня 2020

Попробуйте это

SELECT 
       "Group",
       Name,
       DENSE_RANK() OVER (PARTITION BY "Group" ORDER BY Name) AS Sequence
FROM   table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...