Actualizar una columna de una tabla para que sea una secuencia
-
06-07-2019 - |
Pregunta
Deseo actualizar la columna de una tabla utilizando los resultados de un procedimiento almacenado
create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST);
SELECT SCOPE_IDENTITY();
go
No puedo usar un UDF ya que es nodeterministic. Algo como esto no funcionará
UPDATE [dbo].[t1] SET [c1] = seq
Tengo la sensación de que me estoy acercando a esto de la manera incorrecta.
Solo quiero actualizar una tabla con este aspecto
1 1
2 2
1 4
1 4
5 5
1 2
Para lucir así
1 1
2 2
3 4
4 4
5 5
6 2
Solución
Pruebe algo como esto:
update a set c1 = c1_new
from (
select
c1, c2
, c1_new = row_number() over (order by nullif(c1,c1))
from dbo.t1
) a
Juega con la consulta interna hasta que obtengas algo que te guste, luego aplica la actualización.
El NULLIF (c1, c1) intenta preservar el orden original en el disco. Siempre devuelve nulo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow