Как получить последовательности для каждой строки с другим именем в оракуле? - PullRequest
1 голос
/ 18 января 2012

Проблема: мне нужно получить значения для столбца X с помощью оператора select, пример:

Люди | X

--------------

name1 | 1

name1 | 2

name1 | 3

name2 | 1

name2 | 2

name3 | 1

....

, где количество людей не ограничено.

1 Ответ

4 голосов
/ 18 января 2012
select 
  people,
  row_number() over(partition by people) as x
from yourtable

Обновление: небольшая обратная связь в виде сводки комментариев: Как говорят Дейв Коста и APC, результаты не являются детерминированными.То есть, если вы выполните этот запрос завтра, возможно, что имя name1 получит идентификатор 2 в некоторых условиях.Однако запрос все равно будет правильным.Если в вашей таблице есть такие атрибуты, как DateInserted, DateOfBirth или другие, которые могут различать одинаковые имена, вы можете улучшить запрос, например, так:

select 
  people,
  row_number() over(partition by people order by DateOfBirth) as x
from yourtable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...