Выберите строки с одинаковым идентификатором и переписать идентификатор, сгруппированный по идентификатору - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть таблица, подобная этой:

+------+------+
| AID  | NAME |
+------+------+
|  1   | A    |
|  2   | A    |
|  3   | A    |
|  4   | B    |
|  5   | B    |
+------+------+

и с "select" вывод должен выглядеть примерно так:

+------+------+------+
| AID  | NAME | NEWID|
+------+------+------+
|  1   | A    |  1   |
|  2   | A    |  2   |
|  3   | A    |  3   |
|  4   | B    |  1   |
|  5   | B    |  2   |
+------+------+------+

Я должен использовать только SQL, сохраненныйпроцедура или функции.

Я не знаю, как написать запрос без использования хранимой процедуры.

Кто мне может помочь?

Никола

1 Ответ

0 голосов
/ 30 ноября 2018

Вам нужно row_number():

select t.*,
       row_number() over (partition by name order by id) as newid
from table t;

РЕДАКТИРОВАТЬ: Вы также можете использовать коррелированный подзапрос:

select t.*,
       (select count(*)
        from table t1
        where t1.name = t.name and t1.id <= t.id
       ) as newid
from table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...