У меня есть примерно такая таблица:
CREATE TABLE #TempTable
(
COLUMN1 INT,
COLUMN2 INT
)
INSERT INTO #TempTable
(
COLUMN1,
COLUMN2
)
VALUES
(1, 5),
(2, 4),
(3, NULL),
(4, 2),
(5, NULL)
Я хочу обновить COLUMN2
, чтобы добавить автоматическое увеличение, используя значение MAX из столбца.
Я попробовал этот запрос:
DECLARE @maxNumber INT = 0;
SELECT @maxNumber = ISNULL(MAX(COLUMN2), 0) + 1
FROM #TempTable
SELECT @maxNumber
CREATE SEQUENCE [tempSqu] AS [int] START
WITH @maxNumber INCREMENT BY 1
UPDATE #TempTable
SET COLUMN2 = NEXT VALUE FOR [tempSqu]
WHERE COLUMN2 IS NULL
DROP sequence [tempSqu]
Выход:
COLUMN1 COLUMN2
--------------------
1 5
2 4
3 6
4 2
5 7
MAX+1
всегда приводит к созданию повторяющихся значений, если последние записи удаляются или изменяются. Вам также не нужна ПОСЛЕДОВАТЕЛЬНОСТЬ для получения возрастающих значений, вы можете использоватьROW_NUMBER()
или любую другую функцию ранжирования, чтобы получить номер ранга для каждой строки. - person Panagiotis Kanavos   schedule 04.02.2020