Detta kommer att svara på din specifika fråga med ja eller nej. Jag är inte säker på att det är användbart eftersom datumsökningsvärdena alla är specifika i en hårdkodad lista.
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");
Om känslan av din logik är avsedd att hitta minst en öppen datum då kan du prova något i stil med detta:
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 kommer att vara att du har hårdkodat värdet 4 nu som är kopplat till antalet datum i listan senare i frågan. Det finns sätt att hantera detta mer dynamiskt, men det framgår inte helt av din fråga det bästa sättet att göra det.