Используйте подзапрос, который группирует по stay_id и проверяет ваше требование в предложении HAVING
:
select *
from tablename
where stay_id in (
select stay_id from tablename
group by stay_id
having '2019-03-23' between
max(case when event_type = 'check-in' then date end) and max(case when event_type = 'check-out' then date end)
)
или поскольку дата выезда является (я предполагаю) позже или равна чеку в дате:
select *
from tablename
where stay_id in (
select stay_id from tablename
group by stay_id
having '2019-03-23' between min(date) and max(date)
)
Или, если вы хотите, чтобы 1 строка для каждого stay_id
:
select stay_id, min(date) check_in_date, max(date) check_out_date
from tablename
group by stay_id
having '2019-03-23' between min(date) and max(date)