Isso responderá à sua pergunta específica com sim ou não. Não tenho certeza se é útil, pois os valores de pesquisa de data são todos específicos em uma lista codificada.
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");
Se o sentido da sua lógica pretende encontrar pelo menos um aberto date então você pode tentar algo assim:
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");
O problema será que você codificou o valor 4 agora, que está vinculado ao número de datas na lista posteriormente na consulta. Existem maneiras de lidar com isso de forma mais dinâmica, mas não está totalmente claro na sua pergunta a melhor maneira de fazer isso.