我有一个包含名称的表:
Name
----
John Smith
John Smith
Sam Wood
George Wright
John Smith
Sam Wood
我想创建一个显示以下内容的select语句:
'John Smith 1'
'John Smith 2'
“Sam Wood 1”'George Wright 1'
'John Smith 3'
“Sam Wood 2”换句话说,我想为每个名称添加单独的计数器。有没有办法不使用游标呢?
答案 0 :(得分:2)
使用ROW_NUMBER():
SELECT Name, ROW_NUMBER() OVER(Partition BY Name ORDER BY Name) as [Rank]
FROM MyTable
答案 1 :(得分:1)
这样做的:
select name, count(*) as total from table group by name;
会给你一些看起来像这样的东西:
name | total
-------------+------------
John Smith | 2
-------------+------------
Sam Wood | 2
-------------+------------
George Wright| 1
这不是你真正想要的 - 正如ck指出的那样,ROW_NUMBER()就是你想要的,但并非所有的数据库都支持它 - 例如,mysql不支持。如果您使用的是MySQL,这可能会有所帮助: ROW_NUMBER() in MySQL