Mysql 'больше чем (>)' запрос всегда возвращает 0 - PullRequest
0 голосов
/ 08 сентября 2018

Я работаю с запросом, в котором хочу отобразить количество предстоящих дат. Следующий запрос возвращает 0, даже если есть даты, превышающие текущую дату. Пожалуйста, помогите мне решить эту проблему.

SELECT  (case when b.booked_date > cast(now() as date) then sum(1) else sum(0) end) as upcoming_booked_facilities                           
        from    svk_apt_book_facilities b   
        where   b.customer_id = 1
                and b.association_id = 1        
                and b.is_active = 1
        group   by b.facility_id

1 Ответ

0 голосов
/ 08 сентября 2018

Вам нужно сложить выражение 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, поскольку вы группируете по этому столбцу. Если вместо этого вам нужна условная сумма по всей таблице, не выбирайте и не группируйте по объектам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...