Вам нужно сложить выражение CASE
для условного агрегирования:
SELECT
facility_id,
SUM(CASE WHEN booked_date > CURDATE() THEN 1 ELSE 0 END) AS upcoming_booked_facilities
FROM svk_apt_book_facilities
WHERE
customer_id = 1 AND
association_id = 1 AND
is_active = 1
GROUP BY
facility_id;
Вы пытались использовать сумму в качестве предиката выражения CASE
, что, вероятно, не то, что вам нужно. Обратите внимание, что я также выбираю facility_id
, поскольку вы группируете по этому столбцу. Если вместо этого вам нужна условная сумма по всей таблице, не выбирайте и не группируйте по объектам.