Ver Mensaje Individual
  #3  
Antiguo 03-10-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
creo que lo que necesitas es idéntico a este hilo.

Lo que pedía shoulder era ver el ausentismo en un período.
Parecido a lo que preguntas tu.

Esta fue mi respuesta (Firebird):
Código SQL [-]
/* periodo pedido: desde 10/08/2008 hasta 15/08/2008 */
/* Los que faltaron todo el período */
/* (ejemplo: 01/08/2008 - 31/08/2008) */
select persona,:desde,:hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron una vez empezado el período */
/* (ejemplo: 12/08/2008 - 31/08/2008) */
select persona,fecha_desde,:hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron y volvieron antes de terminar el período */
/* (ejemplo: 01/08/2008 - 12/08/2008) */
select persona,:desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)
union
/* Los que faltaron solo unos dias dentro el período */
/* (ejemplo: 13/08/2008 - 14/08/2008) */
select persona,fecha_desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)
Responder Con Cita