Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] sub consulta de una misma tabla

Estas en el tema de sub consulta de una misma tabla en el foro de SQL Server en Foros del Web. buenos días, espero me podáis ayudar con lo siguiente: tengo una tabla con la siguiente forma (la tabla corresponde a un control de asistencia) : ...
  #1 (permalink)  
Antiguo 25/07/2015, 11:29
 
Fecha de Ingreso: enero-2015
Mensajes: 9
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta sub consulta de una misma tabla

buenos días, espero me podáis ayudar con lo siguiente:

tengo una tabla con la siguiente forma (la tabla corresponde a un control de asistencia) :

Cita:
UserId varchar(20) primary key, (codigo de usuario)
CheckTime datetime primary key, (hora de fichaje de usuario)
CheckType varchar(1), (tipo de fichaje: entrada, descanso, salida)
Sensorid varchar(10), (codigo de biométrico o aparato para marcar asistencia)
logid int (numero o codigo de ingreso, autoincrement)
la tabla no la puedo modificar, porque es lo que el sensor trae y lo necesita asi necesariamente ¬¬

cada ves que se registra alguien ocurre lo siguiente en la vista de datos de tabla:

Cita:
1, '2015-04-01 08:54:25.000', 'entrada', 2, 0001;
1, '2015-04-01 18:54:25.000', 'salida', 2, 0003;
1, '2015-04-02 08:54:25.000', 'entrada', 2, 0004;
1, '2015-04-02 18:54:25.000', 'salida', 2, 0005;

ahora si hacemos un select, veremos que tanto la entrada, como la salida están en filas distantas.

lo que quiero saber es como podría hacer una subconsulta, que me muestre los datos de la siguiente forma, tanto entrada, como salida en una única fila:

Cita:
1, '2015-04-01 08:54:25.000', 'entrada','2015-04-01 18:54:25.000', 'salida', 2;
1, '2015-04-02 08:54:25.000', 'entrada','2015-04-02 18:54:25.000', 'salida', 2;
pensaba hacerlo con una condición que tenga como origen la hora minima de entrada y la hora máxima de salida... o algo similar...

alguna idea????
  #2 (permalink)  
Antiguo 26/07/2015, 03:34
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 5 meses
Puntos: 40
Respuesta: sub consulta de una misma tabla

Supongo que necesitas una consulta que combine cada entrada con la primera salida después de ella, del mismo sensorid:
Código SQL:
Ver original
  1. SELECT  *
  2. FROM    MiTabla T1
  3. OUTER Apply (SELECT Top 1 *
  4.     FROM    MiTabla T2
  5.     WHERE   T2.CheckType='salida'
  6.         AND T2.CheckTime>=T1.CheckTime
  7.         AND T2.Sensorid=T1.Sensorid
  8.     ORDER BY CheckTime ASC) T2
  9. WHERE   T1.CheckType='entrada';
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 26/07/2015, 12:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: sub consulta de una misma tabla

tambien podrias hacerla con un union ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select, sqlserver2008, subconsultas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.