В SQL есть встроенная функция с именем ROW_NUMBER ()
EDIT:
Согласно комментарию, потеряв отличную функцию в порядке
Вы можете попробовать SubSelet
create function dbo.ftAllClusters() returns table as return
Select
Cluster
,(ROW_NUMBER() OVER (order by Cluster)) as RN
from (
Select
distinct
,Cluster
from Company ) as Comp
Или Вы можете попробовать использовать Group BY вместо Distinc (я даже думаю, что это немного быстрее)
Select
Cluster
,(ROW_NUMBER() OVER (order by Cluster)) as RN
from Company
group by Cluster