Обновите столбец таблицы, чтобы она была последовательностью
-
06-07-2019 - |
Вопрос
Я хочу обновить столбец таблицы, используя результаты хранимой процедуры
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
Решение
Попробуйте что-то вроде этого:
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) пытается сохранить первоначальный порядок на диске. Всегда возвращает ноль.
Не связан с StackOverflow