Обновите столбец таблицы, чтобы она была последовательностью - PullRequest
0 голосов
/ 23 июня 2009

Я хочу обновить столбец таблицы, используя результаты хранимой процедуры

create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST); 
SELECT SCOPE_IDENTITY();
go

Я не могу использовать UDF, так как он является узловым. Как-то так не получится

UPDATE [dbo].[t1]     SET [c1] = seq

У меня такое чувство, что я подхожу к этому неправильно.

Я просто хочу обновить таблицу, которая выглядит следующим образом

1 1
2 2
1 4
1 4
5 5
1 2

Чтобы выглядеть так

1 1
2 2
3 4
4 4
5 5
6 2

1 Ответ

4 голосов
/ 23 июня 2009

Попробуйте что-то вроде этого:

update a set c1 = c1_new
from (
  select 
    c1, c2
  , c1_new = row_number() over (order by nullif(c1,c1))
  from dbo.t1
  ) a

Поиграйте с внутренним запросом, пока не получите то, что вам нравится, затем примените обновление.

NULLIF (c1, c1) пытается сохранить первоначальный порядок на диске. Всегда возвращает ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...