SQL - comparar registros misma tabla

   
Vista:

comparar registros misma tabla

Publicado por jose luis (3 intervenciones) el 10/02/2015 15:59:00
Amigos, me gustaría conocer que alternativas puedo tener para dar solución al siguiente requerimiento a través de sql server.

Se requiere saber si una persona reingresa antes de 3 días. En la tabla de ingresos se tiene información de la siguiente forma

cod_ingreso doc_empleado fec_ingreso
1 123 01/01/2015
2 562 01/01/2015
3 685 01/01/2015
4 123 02/01/2015
5 985 02/01/2015

En este caso me debería regresar la cedula 123, ya que ingreso antes de 3 días.

Si alguien me puede colaborar.

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
Imágen de perfil de Isaias

comparar registros misma tabla

Publicado por Isaias (691 intervenciones) el 10/02/2015 17:30:59
con DATEDIFF, en referencia hacia la fecha del sistema GETDATE(), puedes sacar la diferencia de esos 3 días.

¿no?
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

comparar registros misma tabla

Publicado por jose (3 intervenciones) el 10/02/2015 20:21:06
Gracias por el aporte, pero no se podría como tú dices, ya que necesito es restar las fechas de diferentes registros y no contra la fecha del sistema, es decir según la tabla tendría que restar 02/01/2015 - 01/01/2015, por que fueron las fechas de ingreso de la misma persona.
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 Isaias

comparar registros misma tabla

Publicado por Isaias (691 intervenciones) el 10/02/2015 21:48:33
Espero haber comprendido el problema, no la pude desarrollar en una sola consulta, espero que te sea de utilidad


CREATE TABLE #Empleado (cod_ingreso int, doc_empleado int, fec_ingreso datetime)
insert into #Empleado values
(1, 123, '20150101'),
(2, 562, '20150101'),
(3, 685, '20150101'),
(4, 123, '20150102'),
(5, 985, '20150101'),
(6, 562, '20150102'),
(7, 985, '20150128')

-- Creo una tabla de paso, donde guardo aquellos empleados que tienen mas de un registro
SELECT cod_ingreso, doc_empleado, fec_ingreso
into #temptable
FROM #Empleado a where exists (select doc_empleado, count(doc_empleado) from #Empleado b where a.doc_empleado = b.doc_empleado group by doc_empleado having count(doc_empleado) > 1)

-- Obtengo aquellos registros que cumplen con la condicion de tener mas de un registro
-- y que su siguiente fecha de registro sea menor o igual a 3 dias
SELECT a.cod_ingreso, a.doc_empleado, a.fec_ingreso --,DATEDIFF(dd, a.fec_ingreso, b.fec_ingreso)
FROM #Empleado a INNER JOIN #temptable b
ON a.doc_empleado = b.doc_empleado
AND b.fec_ingreso > a.fec_ingreso
AND DATEDIFF(dd, a.fec_ingreso, b.fec_ingreso) <= 3


-- Obtengo
1 123 2015-01-01 00:00:00.000
2 562 2015-01-01 00:00:00.000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

comparar registros misma tabla

Publicado por jose (3 intervenciones) el 11/02/2015 15:43:02
Si amigo, muchas gracias, le hice una pequeña mejora filtrando solamente el último mes. Pero esa era la idea.
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 Isaias

comparar registros misma tabla

Publicado por Isaias (691 intervenciones) el 11/02/2015 17:25:10
De nada, como siempre, es un placer. Saludos
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