Предполагая, что когда вы говорите 'top' и 'последующий', вы фактически подразумеваете 'заказ на P_ID
':
with cte as (
select Rank, row_number() over (order by P_ID) as row_rank
from Items)
update cte
set Rank = 10 - (row_rank-1)/10000;
Это обновится с правой границей диапазона (1-10000 -> ранг 10, 10001-20000 -> ранг 9, 20001-30000 -> ранг 8 и т. Д.) И назначит отрицательные ранги для диапазонов выше 100001. Ваши требования противоречивы : Вы говорите, что «записи 20000-30000 будут иметь ранг 9». Вы, вероятно, имеете в виду «записи 20001-30000 будут иметь ранг 8».