Ini akan menjawab pertanyaan khusus Anda dengan ya atau tidak. Saya tidak yakin ini berguna karena nilai pencarian tanggal semuanya spesifik dalam daftar kode keras.
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");
Jika logika Anda dimaksudkan untuk menemukan setidaknya satu yang terbuka tanggal maka Anda dapat mencoba sesuatu seperti ini:
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");
Masalahnya adalah Anda telah membuat kode keras nilai 4 sekarang yang terkait dengan jumlah tanggal dalam daftar nanti dalam kueri. Ada beberapa cara untuk menangani ini secara lebih dinamis, tetapi dari pertanyaan Anda tidak sepenuhnya jelas cara terbaik untuk melakukannya.