Ayuda con consulta

02/10/2007 - 12:36 por Cristian Meneses | Informe spam
Buenos dias a todos
Tengo una tabla:

ID integer - Clave primaria
IDEmpleado integer
Fecha smalldatetime
Hora char(8)
Ingreso bit

Si hago un select ordenado obtengo un registro abajo de otro:

ID IDEmpleado Fecha Hora
Ingreso
-
15 1 01/10/2007 08:07:33
1
18 1 01/10/2007 13:10:28
0
21 1 02/10/2007 08:15:10
1
29 1 02/10/2007 12:58:25
0
10 2 01/10/2007 07:58:44
1
14 2 01/10/2007 16:31:20
0
30 2 03/10/2007 08:11:04
1


La idea es ver si se puede hacer algo como esto

ID1 ID2 IDEmpleado Fecha1
Hora1 Fecha2 Hora2

15 18 1 01/10/2007
08:07:33 01/10/2007 13:10:28
21 19 1 02/10/2007
08:15:10 02/10/2007 12:58:25
10 14 2 01/10/2007
07:58:44 01/10/2007 16:31:20
30 NULL 2 03/10/2007
08:11:04 NULL NULL

Donde Fecha2 y Hora2 represente el registro proximo donde Ingreso = 0
y la fecha y hora superior
Eso es todo, muchas gracias por tu tiempo
Saludos


Cristian Meneses

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
02/10/2007 - 13:09 | Informe spam
DECLARE @Ingresos TABLE (
IdIngreso integer,
IdEmpleado integer,
Fecha smalldatetime,
Hora char(8),
Ingreso bit
)
INSERT @Ingresos VALUES (15, 1, '20071001', '08:07:33', 1)
INSERT @Ingresos VALUES (18, 1, '20071001', '13:10:28', 0)
INSERT @Ingresos VALUES (21, 1, '20071002', '08:15:10', 1)
INSERT @Ingresos VALUES (29, 1, '20071002', '12:58:25', 0)
INSERT @Ingresos VALUES (10, 2, '20071001', '07:58:44', 1)
INSERT @Ingresos VALUES (14, 2, '20071001', '16:31:20', 0)
INSERT @Ingresos VALUES (30, 2, '20071003', '08:11:04', 1)
SELECT
i1.IdIngreso AS Id1,
i2.IdIngreso AS Id2,
i1.IdEmpleado,
i1.Fecha AS Fecha1,
i1.Hora AS Hora1,
i2.Fecha AS Fecha2,
i2.Hora AS Hora2
FROM
@Ingresos i1 INNER JOIN @Ingresos i2 ON
i1.Fecha = i2.Fecha AND
i1.IdEmpleado = i2.IdEmpleado AND
i1.Ingreso > i2.Ingreso
______________________________________________________

Id1 Id2 IdEmpleado Fecha1 Hora1 Fecha2 Hora2
15 18 1 2007-10-01 08:07:33 2007-10-01 13:10:28
21 29 1 2007-10-02 08:15:10 2007-10-02 12:58:25
10 14 2 2007-10-01 07:58:44 2007-10-01 16:31:20

(3 filas afectadas)

_______________________________________________________

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#2 Cristian Meneses
02/10/2007 - 15:01 | Informe spam
Muchas gracias Ruben
Pero el unico problema que tengo con esto es cuando hay varios
Ingresos o Salidas en un mismo dia. Prueba por ej:

DECLARE @Ingresos TABLE (
IdIngreso integer,
IdEmpleado integer,
Fecha smalldatetime,
Hora char(8),
Ingreso bit
)
INSERT @Ingresos VALUES (15, 1, '20071001', '08:07:33', 1)
INSERT @Ingresos VALUES (18, 1, '20071001', '13:10:28', 0)
INSERT @Ingresos VALUES (71, 1, '20071001', '18:05:10', 1)
INSERT @Ingresos VALUES (79, 1, '20071001', '22:58:25', 0)
INSERT @Ingresos VALUES (21, 1, '20071002', '08:15:10', 1)
INSERT @Ingresos VALUES (29, 1, '20071002', '12:58:25', 0)
INSERT @Ingresos VALUES (10, 2, '20071001', '07:58:44', 1)
INSERT @Ingresos VALUES (14, 2, '20071001', '16:31:20', 0)
INSERT @Ingresos VALUES (30, 2, '20071003', '08:11:04', 1)
SELECT
i1.IdIngreso AS Id1,
i2.IdIngreso AS Id2,
i1.IdEmpleado,
i1.Fecha AS Fecha1,
i1.Hora AS Hora1,
i2.Fecha AS Fecha2,
i2.Hora AS Hora2
FROM
@Ingresos i1 INNER JOIN @Ingresos i2 ON
i1.Fecha = i2.Fecha AND
i1.IdEmpleado = i2.IdEmpleado AND
i1.Ingreso > i2.Ingreso

Saludos

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