我有一个包含以下记录的表:
PatientId PersonIdentifier
1 abc
2 abc
3 def
4 def
5 def
我想分配一个数字的personId。因此,人员标识符abc都将具有ID 1,而def都将具有ID2。我该怎么办?
我尝试了行数,排名等,但似乎无法使其正常工作。
欢呼
答案 0 :(得分:2)
DENSE_RANK
在这里似乎是正确的选择。
select PatientId, PersonIdentifier,
DENSE_RANK() OVER (ORDER BY PersonIdentifier) as Id
from SomeUnknownTable
您想要排名,因为您想为多行分配相同值(这不是PARTITION
ing情况)。而且,您希望进行密集排序,以使分配了相同值的多个行不会在后台“消耗”其他值。