Renumerar Tabla.

06/10/2005 - 13:05 por José Antonio | Informe spam
En una tabla que tiene una columna registro numerada por la aplicación(no es
una columna autoincrement), que no admite duplicados por que es la clave PK
principal de la tabla, si existen huecos por que se han anulado filas, ¿ de
que manera se puede renumerar para rellenar esos huecos y que se quede
ordenado por fecha y registro que es otra columna clave pero que si admite
duplicados?

la tabla en su origen esta asi:

Registro Fecha
1 01/01/05
2 10/01/05
3 05/01/05
4 02/01/05
5 01/01/05
al anular filas queda asi:

Registro Fecha
1 01/01/05
4 02/01/05
5 01/01/05

despues de renumerar debiera quedar asi:

Registro Fecha
1 01/01/05
2 01/01/05
3 02/01/05
Saludos.
 

Leer las respuestas

#1 Carlos Sacristán
06/10/2005 - 13:32 | Informe spam
Echa un vistazo a este ejemplo:

****************************************************

DROP TABLE #test
go
CREATE TABLE #test
(orden smallint,
nombre char(10))

INSERT #test SELECT 1, 'Juan'
INSERT #test SELECT 2, 'Pepe'
INSERT #test SELECT 3, 'Luis'
INSERT #test SELECT 4, 'José'
INSERT #test SELECT 5, 'Carlos'

SELECT * FROM #test

DELETE FROM #test WHERE orden in ( 2, 4)

SELECT * FROM #test

DECLARE @orden smallint SET @orden = 0
UPDATE T
SET @orden= @orden + 1, orden=@orden
FROM #test T

SELECT * FROM #test

***************************************

Espero te sirva


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"José Antonio" escribió en el
mensaje news:
En una tabla que tiene una columna registro numerada por la aplicación(no


es
una columna autoincrement), que no admite duplicados por que es la clave


PK
principal de la tabla, si existen huecos por que se han anulado filas, ¿


de
que manera se puede renumerar para rellenar esos huecos y que se quede
ordenado por fecha y registro que es otra columna clave pero que si admite
duplicados?

la tabla en su origen esta asi:

Registro Fecha
1 01/01/05
2 10/01/05
3 05/01/05
4 02/01/05
5 01/01/05
al anular filas queda asi:

Registro Fecha
1 01/01/05
4 02/01/05
5 01/01/05

despues de renumerar debiera quedar asi:

Registro Fecha
1 01/01/05
2 01/01/05
3 02/01/05
Saludos.


Preguntas similares