Update secuencial

21/03/2007 - 10:45 por José Luis Capel - Aicom | Informe spam
Hola,

Sigo con mis cuestiones de novato... Dada una tabla con un campo numérico
donde normalmente guardaremos un orden
correlativo. Algo así

Tabla: pruebas

cCodigo dFecha nContador
'00012' '01/09/2005' 1
'00013' '02/09/2005' 3
'00014' '01/09/2005' 4
'00015' '03/09/2005' 5
'00011' '04/09/2005' 6
'00010' '05/09/2005' 8

Quisiera saber si hay alguna manera de hacer un único update para conseguir
esto:

cCodigo dFecha nContador
'00012' '01/09/2005' 1
'00013' '02/09/2005' 2
'00014' '01/09/2005' 3
'00015' '03/09/2005' 4
'00011' '04/09/2005' 5
'00010' '05/09/2005' 6

Algo así:

UPDATE PRUEBAS SET nContador = nRow() //suponiendo que nRow() fuera una
función que devuelva un número consecutivo..

Saludos,
José Luis Capel
 

Leer las respuestas

#1 Rubén Vigón
21/03/2007 - 11:20 | Informe spam
Hola José Luis,

Pueses hacerlo con una pequeña subconsulta de tipo COUNT(*); prueba lo siguiente:

UPDATE TuTabla SET nContador = (SELECT COUNT(*) FROM TuTabla t2 WHERE t2.nContador <= TuTabla.nContador)
_______________________________________

cCodigo dFecha nContador
0012 2005-09-01 00:00:00 1
0013 2005-09-02 00:00:00 2
0014 2005-09-01 00:00:00 3
0015 2005-09-03 00:00:00 4
0011 2005-09-04 00:00:00 5
0010 2005-09-05 00:00:00 6

(6 filas afectadas)
_______________________________________

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

Preguntas similares