ti-enxame.com

SQL incrementa um número

Problema:

Desejo incrementar um número com base em uma tabela. Por exemplo, se uma tabela contém linha

1 1 2 3 4 4 4 5

a coluna mytable deve ser incrementada com base em max (linha) + 1 na coluna acima. Portanto, o resultado deve ser assim:

6 6 7 8 9 9 9 10

Este é o código até agora:

OPEN cur

DECLARE @WORKING_ON_ID INT
FETCH NEXT FROM cur INTO @WORKING_ON_ID

WHILE @@FETCH_STATUS = 0
BEGIN
                SET @MAX_ID = @MAX_ID + 1

                UPDATE 
                                #WorkingTable
                SET
                                ID = @MAX_ID
                WHERE
                                ID = @WORKING_ON_ID

FETCH NEXT FROM cur INTO @WORKING_ON_ID

END

CLOSE cur
DEALLOCATE cur

Você poderia me ajudar a encontrar uma solução para este problema. Obrigado!

9
Ish

Acho que você poderia fazer isso facilmente com isto:

UPDATE your_table
SET id = id + (SELECT MAX(id) FROM your_table)
12
Marco

Não seria mais fácil simplesmente pegar o máximo e adicioná-lo a esta coluna de ID? (Lembre-se: o a coluna ID não pode ser uma coluna de identidade, caso contrário, uma atualização falhará)

DECLARE @MAXID INT
SELECT @MAXID = MAX(ID) FROM #WorkingTable
UPDATE #WorkingTable SET ID = ID + @MAXID
3
Matten

Tente este código:

Declare @count int = 0
UPDATE table
SET @count = code = @count + 1
2
Ali Rasoulian

No SQL Server 2005 ou versão posterior:

WITH cte AS (
  SELECT ID, MAX(ID) OVER () AS delta FROM atable
)
UPDATE cte
SET ID = ID + delta;
1
Andriy M

Por que usar um cursor? Isso não resolveria seu problema também:

DECLARE @MAXID int
SELECT @MAXID=MAX(ID) FROM YourTable
UPDATE YourTable SET ID = ID + @MAXID
1
Pieter