Чтобы получить ранг или должность, как вам нужно, вы можете просто использовать функцию RANK (), как показано ниже:
create table #MyTable (Position int, Points int)
insert into #MyTable values (0, 99),(0, 97),(0, 89)
SELECT #MyTable.Points, RANK () OVER( ORDER BY Points desc) AS Position
FROM #MyTable
Вывод будет таким, как показано ниже
Points Position
99 1
97 2
89 3
Вы можете использовать его в обновлении с внутренним объединением с исходной таблицей и таблицей с функцией ранга, как показано ниже.
UPDATE A
SET A.Position = B.Position
from #MyTable A
INNER JOIN (SELECT #MyTable.Points, RANK () OVER( ORDER BY Points desc) AS Position
FROM #MyTable) B ON A.Points = B.Points
После обновления вы можете получить обновленную позицию, как показано ниже, используя оператор выбора
SELECT * FROM #MyTable
Position Points
1 99
2 97
3 89
drop table #MyTable.
Надеюсь, это поможет вам.