2017-01-20 7 views
1

Я пытаюсь обновить столбец с помощью ROW_NUMBER(), но иногда работает иногда, что не так? Это инструкция:столбец обновления с использованием ROW_NUMBER

update temp1 set temp1.RowNumber = m.RowID 
from 
(
    select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv 
    from temp1 t 
) m 
where temp1.id_pv = m.id_pv 

Вот две колонки таблицы до и после обновления

enter image description here

Если я запускаю только:

select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv from temp1 t 

он работает как шарм. Идеи?

+0

Является ли 'id_pv' уникальным? Кажется, это не скриншоты. –

+0

Нет, это не так. Это поле является идентификатором клиентов. Фактически, таблица имеет около 40 полей. Но в некоторых случаях это работает. Мне нужно добавить последовательный номер (с инструкцией по обновлению), считая поле id_pv –

ответ

1

Если id_pv не является уникальным, то выбор не даст стабильных результатов. Возможно, вам потребуется добавить еще один столбец, который уникален для предложения ORDER BY, чтобы стабилизировать сортировку. Это должно приводить к повторяемым результатам.

+0

Хорошо, я попытаюсь найти другие столбцы. Есть ли другой способ сделать это? –

+0

Не то, чтобы я знал; однако, это был не первый случай, когда я не знал. Другой столбец сам по себе не обязательно должен быть уникальным, но пара его. –

Смежные вопросы