Esto responderá a su pregunta particular con sí o no. No estoy seguro de que sea útil ya que los valores de búsqueda de fechas son todos específicos en una 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");
Si el sentido de su lógica está destinado a encontrar al menos uno abierto date, entonces podrías intentar algo como esto:
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");
El problema será que ha codificado el valor 4 ahora, que está vinculado a la cantidad de fechas en la lista más adelante en la consulta. Hay formas de manejar esto de forma más dinámica, pero no está del todo claro a partir de su pregunta cuál es la mejor manera de hacerlo.