分配唯一的ID SQL服务器

时间:2018-07-26 05:40:11

标签: sql sql-server window-functions

我有一个包含以下记录的表:

PatientId    PersonIdentifier
1            abc
2            abc
3            def
4            def
5            def

我想分配一个数字的personId。因此,人员标识符abc都将具有ID 1,而def都将具有ID2。我该怎么办?

我尝试了行数,排名等,但似乎无法使其正常工作。

欢呼

1 个答案:

答案 0 :(得分:2)

DENSE_RANK在这里似乎是正确的选择。

select PatientId, PersonIdentifier,
DENSE_RANK() OVER (ORDER BY PersonIdentifier) as Id
from SomeUnknownTable

您想要排名,因为您想为多行分配相同值(这不是PARTITION ing情况)。而且,您希望进行密集排序,以使分配了相同值的多个行不会在后台“消耗”其他值。