SQL - Consulta agrupada de eventos de tabla

 
Vista:
sin imagen de perfil

Consulta agrupada de eventos de tabla

Publicado por Roberto (2 intervenciones) el 23/10/2013 09:39:40
Hola:

Tengo una pequeña pregunta o gran duda según se mire. Imaginar que tenemos una
tabla de entradas y salidas de personas de un centro de trabajo o coches de un
garaje (mi caso real es otro pero la simplificación es suficiente). Imaginar que
la tabla se denomina TablaAccesos cuya estructura y datos es tal que así:

Nombre Evento Hora
------ ------ -----
Pepe 0 9:35
Pepe 1 17:21
Juan 0 8:32
Juan 1 16:56
Tomas 0 10:00

donde el indicador Evento es igual a 0 cuando la persona entra, mientras que
Evento es igual a 1 cuando la persona abandona el edificio. Por simplicidad,
imaginar que para cada nombre sólo hay un evento de entrada y quizás uno (y
sólo uno) de salida.

Me gustaría realizar una única consulta SQL en el que se refleje cuando ha
entrado y cuando ha salido cada persona del edificio. Si no ha salido del
edificio (es decir, no hay evento de salida) quiero que el campo esté vacío, es
decir, el resultado de la consulta debería ser:

Nombre Entrada Salida
------ ------- ------
Pepe 9:3517:21
Juan 8:32 16:56
Tomas 10:00

He intentado construir la consulta de mil formas usando INNER JOIN, RIGHT JOIN,
LEFT JOIN, por ejemplo,

SELECT
TblEntradas.Nombre AS Nombre,
TblEntradas.Hora AS Entrada,
TblSalidas.Hora AS Salida
FROM
TablaAccesos AS TblEntradas
RIGHT JOIN
TablaAccesos AS TblSalidas
ON
TblEntradas.Nombre=TblSalidas.Nombre
WHERE
TblEntradas.Evento=0 AND TblSalidas.Evento=1

y el resultado siempre es el mismo: no incluye el elemento que no tiene evento
de salida, es decir:

Nombre Entrada Salida
------ ------- ------
Pepe 9:35 17:21
Juan 8:32 16:56

¿Alguien se le ocurre como se podría hacer la consulta para que incluya TODOS
los nombres?

Un saludo y gracias por adelantado
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
sin imagen de perfil

Consulta agrupada de eventos de tabla

Publicado por Roberto (2 intervenciones) el 23/10/2013 10:55:45
Me autocontesto, por si alguien tiene el mismo problema:

TRANSFORM First(TablaAccesos.Hora) AS PrimeroDeHora
SELECT TablaAccesos.Nombre
FROM TablaAccesos
GROUP BY TablaAccesos.Nombre
PIVOT TablaAccesos.Evento
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
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta agrupada de eventos de tabla

Publicado por xve (284 intervenciones) el 23/10/2013 16:00:36
Gracias por comentarlo Roberto!!!
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