SQL - Consulta sobre agrupación de registros en tabla

   
Vista:

Consulta sobre agrupación de registros en tabla

Publicado por Carlos GP (2 intervenciones) el 19/10/2010 17:09:55
Buenas!!!

Me estoy volviendo loco para obtener una QUERY que me facilite los resultados que deseo.

Imaginemos que tenemos la siguiente tabla:

IDEMPLEADO NOMBRE APELLIDO FECHA ESTADO
---------------------------------------------------------------------------------------------------------------------
000556 JUAN RODRIGUEZ 17/10/2010 09:00 PROGRAMANDO
000556 JUAN RODRIGUEZ 17/10/2010 12:55 DESCANSANDO
000556 JUAN RODRIGUEZ 17/10/2010 13:15 VAGUEANDO
000556 JUAN RODRIGUEZ 17/10/2010 19:42 INGENIANDO
000556 JUAN RODRIGUEZ 18/10/2010 05:47 DURMIENDO
000556 JUAN RODRIGUEZ 18/10/2010 13:15 VAGUEANDO
000556 JUAN RODRIGUEZ 18/10/2010 17:55 DESCANSANDO
000556 JUAN RODRIGUEZ 19/10/2010 12:55 DESCANSANDO
000556 JUAN RODRIGUEZ 19/10/2010 13:15 VAGUEANDO
000556 JUAN RODRIGUEZ 19/10/2010 19:42 MERENDANDO

Suponiendo que la tabla tenga varios empleados, ésta recoge cada "cambio" en la actitud de los empleados. Digamos que es como un "histórico" de trabajo: cada vez que un empleado hace una cosa diferente, se recoge lo que hace con su fecha y hora.

Lo que necesito es, en una sola consulta, sacar el último estado del empleado de cada día (agrupando por día), para que retorne algo como:
IDEMPLEADO NOMBRE APELLIDO FECHA ESTADO
---------------------------------------------------------------------------------------------------------------------
000556 JUAN RODRIGUEZ 17/10/2010 19:42 INGENIANDO
000556 JUAN RODRIGUEZ 18/10/2010 17:55 DESCANSANDO
000556 JUAN RODRIGUEZ 19/10/2010 19:42 MERENDANDO

Sabéis cómo debe hacerse la agrupación¿? La BBDD es una Oracle10. Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta sobre agrupación de registros en tabla

Publicado por Leonardo Josué (878 intervenciones) el 19/10/2010 18:09:25
Buenos días Carlos GP:

Para este caso puedes hacer uso de una subconsulta. El primer paso sería obtener las última de las fechas para cada día, para esto será necesario primero que separes tu fecha para extraer sólo el día y así agrupar, quedaría así:

select
T1.IDEMPLEADO,
to_char(T1.FECHA, 'dd/mm/yyyy') as dia,
max(T1.FECHA) as ULTIMA_FECHA from TuTabla T1
group by
T1.IDEMPLEADO,
to_char(T1.FECHA, 'dd/mm/yyyy')

Una vez que tengas esto lo único que tienes que hacer es un INNER JOIN con esta subconsulta, de tal manera que el resultado sería algo así:

select
TuTabla.IDEMPLEADO,
TuTabla.NOMBRE,
TuTabla.APELLIDO,
TO_CHAR(TuTabla.FECHA, 'dd/mm/yyyy hh24:mi'),
TuTabla.ESTADO
from TuTabla
inner join
(
select
T1.IDEMPLEADO,
to_char(T1.FECHA, 'dd/mm/yyyy') as dia,
max(T1.FECHA) as ULTIMA_FECHA from TuTabla T1
group by
T1.IDEMPLEADO,
to_char(T1.FECHA, 'dd/mm/yyyy')
) T2 on
TuTabla.IDEMPLEADO = T2.IDEMPLEADO and
TuTabla.FECHA = T2.ULTIMA_FECHA

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta sobre agrupación de registros en tabla

Publicado por Carlos GP (2 intervenciones) el 19/10/2010 18:30:09
Buenos días Leo.

Mil gracias por tu aporte, solucionó a la perfección mis necesidades.

Un saludo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar