4 votes

SQL : Ajouter des compteurs dans la sélection

J'ai une table qui contient des noms :

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

Je veux créer une instruction de sélection qui montre ceci :

Nom

"John Smith 1

"John Smith 2

Sam Wood 1

George Wright 1

"John Smith 3

"Sam Wood 2

En d'autres termes, je veux ajouter des compteurs distincts à chaque nom. Existe-t-il un moyen de le faire sans utiliser de curseurs ?

4voto

cjk Points 27463

Utilisez ROW_NUMBER() :

SELECT Name, ROW_NUMBER() OVER(Partition BY Name ORDER BY Name) as [Rank]
FROM MyTable

1voto

Duncan Lock Points 2211

Faire :

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

vous obtiendrez quelque chose qui ressemble à ça :

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

Ce n'est pas ce que vous vouliez vraiment - ROW_NUMBER(), comme ck l'a souligné, est ce que vous voulez, mais toutes les bases de données ne le supportent pas - mysql ne le fait pas, par exemple. Si vous utilisez MySQL, ceci pourrait vous aider : ROW_NUMBER() dans MySQL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X