SQL Преобразование суммы нулевых значений в 0 - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть запрос в SQL, который суммирует значения и добавляет их в виде месяцев к дате.

    SELECT
    FROM_UNIXTIME(S.created) as start_date, 
   (FROM_UNIXTIME(S.created) + INTERVAL (C.items_left + C.items_given) MONTH)
    AS end_date,
    FROM table1 S
    LEFT JOIN table2 C ON C.id = S.id;

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

(FROM_UNIXTIME(S.created) + INTERVAL (C.items_left + C.items_given) MONTH)
AS end_date,

генерирует нули, потому что (C.items_left + C.items_given) равно нулю.

Итак, вопрос в том, как мне выполнить эту сумму, чтобы результат был 0 вместо нуля?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Использование COALESCE():

(FROM_UNIXTIME(S.created) + INTERVAL (COALESCE(C.items_left, 0) + COALESCE(C.items_given, 0)) MONTH)
0 голосов
/ 22 февраля 2019

использование coalesce

SELECT
    FROM_UNIXTIME(S.created) as start_date, 
   ( coalesce(FROM_UNIXTIME(S.created),0) + INTERVAL coalesce((coalesce(C.items_left,0) + coalesce(C.items_given,0)),0) MONTH)
    AS end_date,
    FROM table1 S
    LEFT JOIN table2 C ON C.id = S.id;
...