Creo que esto resuelve tu cuestión.
Es la unión de varias consultas parciales.
En el caso de no estar de baja todo el período pedido, se devuelve la fecha_desde o fecha_hasta en que se inició o finalizó la baja.
En el caso de que la fecha de baja/alta esté fuera del período, se devuelve la fecha pedida como parámetro.
Código SQL
[-]
select persona,:desde,:hasta from tabla_ausentismo
where
(fecha_desde <= :desde) and
(fecha_hasta >= :hasta)
union
select persona,fecha_desde,:hasta from tabla_ausentismo
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :hasta)
union
select persona,:desde,fecha_hasta from tabla_ausentismo
where
(fecha_desde <= :desde) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)
union
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)