我有一个包含名称的表:
Name
----
John Smith
John Smith
Sam Wood
George Wright
John Smith
Sam Wood
Run Code Online (Sandbox Code Playgroud)
我想创建一个 select 语句来显示以下内容:
《约翰·史密斯 1》
《约翰·史密斯 2》
《萨姆·伍德 1》
《乔治·赖特 1》
《约翰·史密斯 3》
《萨姆·伍德2》
换句话说,我想为每个名称添加单独的计数器。有没有办法不使用游标来做到这一点?
使用 ROW_NUMBER():
SELECT Name, ROW_NUMBER() OVER(Partition BY Name ORDER BY Name) as [Rank]
FROM MyTable
Run Code Online (Sandbox Code Playgroud)