Inicio » Oracle » SQL » Como encontrar solapamientos en rangos de fecha:

Como encontrar solapamientos en rangos de fecha:

Queremos identificar todos los empleados que comienzan un nuevo proyecto antes de terminar el existente. Partiendo de la siguiente información:

EMP  NOM                  PROY FECHA_INI          FECHA_FIN
---- -------------------- ---- ------------------ ------------------
1    Juan                 1    16-JUN-11          18-JUN-11
1    Juan                 4    19-JUN-11          24-JUN-11
1    Juan                 7    22-JUN-11          25-JUN-11
1    Juan                 1    25-JUN-11          28-JUN-11
2    Pedro                2    17-JUN-11          21-JUN-11
2    Pedro                8    23-JUN-11          25-JUN-11
2    Pedro                1    29-JUN-11          30-JUN-11
2    Pedro                1    26-JUN-11          27-JUN-11
2    Pedro                5    20-JUN-11          24-JUN-11
3    Luis                 3    18-JUN-11          22-JUN-11
3    Luis                 1    27-JUN-11          28-JUN-11
3    Luis                 1    30-JUN-11          03-JUN-11
3    Luis                 9    24-JUN-11          27-JUN-11
3    Luis                 6    21-JUN-11          23-JUN-11

Revisando los resultados vemos por ejemplo que el empleado Juan comienza el proyecto 7 antes de terminar el 4
Para determinar que proyectos se están solapando podemos utilizar la siguiente select:

select a.IDempleado,a. Nombre,
        ‘proyecto ‘||b.Proyecto_id||
        ‘ se solapa con el proyecto ‘||a.Proyecto_id as msg
   from emp_proyectos a,
        emp_proyectos b
  where a.IDempleado = b.IDempleado
    and b.fecha_ini >= a.fecha_ini
    and b.fecha_ini <= a.fecha_fin
    and a.Proyecto_id != b.Proyecto_id
    
   
1|Juan|proyecto 7 se solapa con el proyecto 4
1|Juan|proyecto 10 se solapa con el proyecto 7
2|Pedro|proyecto 8 se solapa con el proyecto 5
2|Pedro|proyecto 5 se solapa con el proyecto 2
3|Luis|proyecto 12 se solapa con el proyecto 9
3|Luis|proyecto 6 se solapa con el proyecto 3

Un pensamiento en “Como encontrar solapamientos en rangos de fecha:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s