Проблема в том, что ваши подвыборы возвращают более одного значения - IE:
SELECT ...
(SELECT COUNT(*)
FROM bed
WHERE respatient_id IS NULL
GROUP BY cc_name) AS free_beds,
...
... возвращает строку для каждого cc_name
, но SQL не поддерживает сжатие набора результатов для подвыбора - отсюда ошибка.
Не нужны подвыборы, это можно сделать, используя один проход по таблице, используя:
SELECT b.cc_name,
COUNT(*) AS total,
SUM(CASE
WHEN b.respatient_id > 0 THEN 1
ELSE 0
END) AS occupied_beds,
SUM(CASE
WHEN b.respatient_id IS NULL THEN 1
ELSE 0
END) AS free_beds
FROM bed b
GROUP BY b.cc_name