Questo risponderà alla tua domanda particolare con sì o no. Non sono sicuro che sia utile poiché i valori di ricerca della data sono tutti specifici in un elenco codificato.
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 il senso della tua logica è inteso a trovare almeno un aperto data allora potresti provare qualcosa del genere:
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");
Il problema sarà che ora hai codificato il valore 4 che è legato al numero di date nell'elenco più avanti nella query. Ci sono modi per gestirlo in modo più dinamico, ma dalla tua domanda non è del tutto chiaro quale sia il modo migliore per farlo.