Если память служит, row_number()
возвращает число в своем собственном разделе.Другими словами, row_number() over (partition by name order BY name)
будет возвращать 1 для каждой строки, кроме дубликатов.Вы, скорее всего, захотите rank() over (order by name)
вместо.
После долгого обсуждения:
update telephn_table
set sid = rows.new_sid
from (select pkey,
row_number() over (partition BY name) as new_sid,
name
from telephn_table
) as rows
where rows.pkey = telephn_table.pkey;