Как создать внутреннюю нумерацию вхождений с помощью SQL - PullRequest
4 голосов
/ 24 октября 2011

Как я могу создать новый столбец (inCount) с нумерацией вхождений в определенном столбце?Вот пример:

id      name        inCount
1       Orly        1
2       Ernest      1
3       Rachel      1
4       Don         1
5       Don         2
6       Ernest      2
7       Angela      1
8       Ernest      3
9       David       1
10      Rachel      2
11      Sully       1
12      Sully       2
13      Rachel      3
14      David       2
15      David       3
16      Kevin       1
17      Kevin       2
18      Orly        2
19      Angela      2
20      Sully       3
21      Kevin       3
22      Don         3
23      Orly        3
24      Angela      3

Дон с идентификатором 5 имеет номер 2, потому что Дон также присутствует с идентификатором 4.Дон из id 22 имеет номер 3 из-за вышеуказанных предыдущих случаев.

Я использую MS SQL SERVER 2008 R2 Express Edition.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 24 октября 2011

Вы можете использовать partition by, например:

select  row_number() over (partition by name order by id) as inCount
,       *
from    YourTable
order by
        id
3 голосов
/ 24 октября 2011

Это должно сработать

SELECT id, Name, ROW_NUMBER() OVER(PARTITION BY Name ORDER BY id)
  FROM table
 ORDER BY id

РЕДАКТИРОВАТЬ: добавлен заказ по предложению на выбор, чтобы показать результаты в том же порядке, указанном OP.ORDER BY в ROW_NUMBER не изменил результат, но я изменил его на id, так как он будет сохранять правильное значение row_number для данных выборки.

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