Consulta SQL

10/12/2007 - 19:46 por Pablo Rodríguez | Informe spam
Hola grupo, tengo una consulta que me está volviendo loco...

Tengo una tabla en la cual tengo registros más o menos así:

Codigo IdEstado FechaHora
0000111 2 10/12/2007 12:20:00
0000111 1 10/12/2007 12:37:35
0000112 7 10/12/2007 14:00:59
0000112 8 10/12/2007 14:03:56
0000112 3 10/12/2007 14:04:00


O sea que por cada código hay más de un registro entre los cuales cambia el
IdEstado y FechaHora, yo necesito poder sacar el último estado de cada
código, o sea para cada código sacar el registro con mayor FechaHora... pero
hasta el momento no logro hacer la consulta

Alguien me puede ayudar?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Isaias
10/12/2007 - 20:14 | Informe spam
CREATE TABLE #TEMPORAL (CODIGO CHAR(7), IDESTADO INT, FECHA DATETIME)

INSERT INTO #TEMPORAL VALUES('0000111', 2,'10/12/2007 12:20:00')
INSERT INTO #TEMPORAL VALUES('0000111', 1,'10/12/2007 12:37:35')
INSERT INTO #TEMPORAL VALUES('0000112', 7,'10/12/2007 14:00:59')
INSERT INTO #TEMPORAL VALUES('0000112', 8,'10/12/2007 14:03:56')
INSERT INTO #TEMPORAL VALUES('0000112', 3,'10/12/2007 14:04:00')

SELECT * FROM #TEMPORAL join
(SELECT CODIGO, MAX(FECHA) maxima FROM #TEMPORAL GROUP BY CODIGO) as x
on #TEMPORAL.CODIGO = x.CODIGO and #TEMPORAL.FECHA = x.maxima
Saludos
IIslas


"Pablo Rodríguez" wrote:

Hola grupo, tengo una consulta que me está volviendo loco...

Tengo una tabla en la cual tengo registros más o menos así:

Codigo IdEstado FechaHora
0000111 2 10/12/2007 12:20:00
0000111 1 10/12/2007 12:37:35
0000112 7 10/12/2007 14:00:59
0000112 8 10/12/2007 14:03:56
0000112 3 10/12/2007 14:04:00


O sea que por cada código hay más de un registro entre los cuales cambia el
IdEstado y FechaHora, yo necesito poder sacar el último estado de cada
código, o sea para cada código sacar el registro con mayor FechaHora... pero
hasta el momento no logro hacer la consulta

Alguien me puede ayudar?

Gracias de antemano.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
10/12/2007 - 22:23 | Informe spam
Pablo,

Si usas SS 2005, puedes tratar:

;with cte
as
(
select *, row_number() over(partition by codigo order by FechaHora DESC) as rn
from tu_tabla
)
select *
from cte
where rn = 1

Tener un indice por (codigo, FechaHora DESC) puede ser de ayuda.


AMB

"Pablo Rodríguez" wrote:

Hola grupo, tengo una consulta que me está volviendo loco...

Tengo una tabla en la cual tengo registros más o menos así:

Codigo IdEstado FechaHora
0000111 2 10/12/2007 12:20:00
0000111 1 10/12/2007 12:37:35
0000112 7 10/12/2007 14:00:59
0000112 8 10/12/2007 14:03:56
0000112 3 10/12/2007 14:04:00


O sea que por cada código hay más de un registro entre los cuales cambia el
IdEstado y FechaHora, yo necesito poder sacar el último estado de cada
código, o sea para cada código sacar el registro con mayor FechaHora... pero
hasta el momento no logro hacer la consulta

Alguien me puede ayudar?

Gracias de antemano.



Respuesta Responder a este mensaje
#3 Oscar
12/12/2007 - 01:25 | Informe spam
Quizás esto te valga...

SELECT ...
FROM laTabla As T
WHERE Fecha = (SELECT MAX(Fecha)
FROM laTabla
WHERE Nombre = T.Nombre)

Solución By: Leonardo Azpurua!!!

Saludos,
Carlos

Pablo Rodríguez escribió:
Hola grupo, tengo una consulta que me está volviendo loco...

Tengo una tabla en la cual tengo registros más o menos así:

Codigo IdEstado FechaHora
0000111 2 10/12/2007 12:20:00
0000111 1 10/12/2007 12:37:35
0000112 7 10/12/2007 14:00:59
0000112 8 10/12/2007 14:03:56
0000112 3 10/12/2007 14:04:00


O sea que por cada código hay más de un registro entre los cuales cambia el
IdEstado y FechaHora, yo necesito poder sacar el último estado de cada
código, o sea para cada código sacar el registro con mayor FechaHora... pero
hasta el momento no logro hacer la consulta

Alguien me puede ayudar?

Gracias de antemano.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida