SQL: добавить счетчики в выбор - PullRequest
2 голосов
/ 03 июня 2010

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

Name
----
John Smith
John Smith
Sam Wood
George Wright
John Smith
Sam Wood

Я хочу создать оператор выбора, который показывает это:

Имя

'Джон Смит 1'

'Джон Смит 2'

«Сэм Вуд 1»

'Джордж Райт 1'

«Джон Смит 3»

«Сэм Вуд 2»

Другими словами, я хочу добавить отдельные счетчики для каждого имени. Есть ли способ сделать это без использования курсоров?

Ответы [ 2 ]

2 голосов
/ 03 июня 2010

Использовать ROW_NUMBER ():

SELECT Name, ROW_NUMBER() OVER(Partition BY Name ORDER BY Name) as [Rank]
FROM MyTable
1 голос
/ 03 июня 2010

Выполнение:

select name, count(*) as total from table group by name;

даст вам что-то похожее на это:

name         |  total
-------------+------------
John Smith   |  2
-------------+------------
Sam Wood     |  2
-------------+------------
George Wright|  1

Это не то, что вы действительно хотели - ROW_NUMBER (), как указал ck, это то, что вы хотите, но не все базы данных поддерживают это - например, mysql. Если вы используете MySQL, это может помочь: ROW_NUMBER () в MySQL

...