Dette vil besvare dit specifikke spørgsmål med ja eller nej. Jeg er ikke sikker på, at det er nyttigt, da datosøgningsværdierne alle er specifikke i en hårdkodet liste.
select coalesce(max('no'), 'yes') as available
from tbl t
where room_type_id = 23 and
dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00",
"2018-03-08 00:00:00", "2018-03-09 00:00:00");
Hvis det er meningen med din logik at finde mindst én åben dato, så kan du prøve noget som dette:
select case when count(*) = 4 then 1 else 0 end as whatever_this_means
from tbl t
where room_type_id = 23 and
dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00",
"2018-03-08 00:00:00", "2018-03-09 00:00:00");
Problemet vil være, at du har hårdkodet værdien 4 nu, som er bundet til antallet af datoer på listen senere i forespørgslen. Der er måder at håndtere dette mere dynamisk på, men det er ikke helt klart ud fra dit spørgsmål, den bedste måde at gøre det på.