Това ще отговори на конкретния ви въпрос с да или не. Не съм сигурен, че е полезно, тъй като стойностите за търсене на дата са специфични в твърдо кодиран списък.
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");
Ако смисълът на вашата логика е предназначен да намерите поне един отворен дата, тогава можете да опитате нещо подобно:
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");
Проблемът ще бъде, че сте кодирали твърдо стойността 4 сега, която е обвързана с броя на датите в списъка по-късно в заявката. Има начини да се справите с това по-динамично, но от въпроса ви не става съвсем ясно кой е най-добрият начин за това.