Использовать coalesce()
:
select (select coalesce(sum(amount), 0)
from change_graphic
where month(change_date) = 4 and year(change_date) = 2019) +
(select coalesce(sum(provision), 0)
from contracts
where accepted = 0 and month(date) = 4 and year(date) = 2019
);
Подзапросы гарантированно возвращают одну строку, поскольку они являются запросами агрегации без GROUP BY
.Следовательно, вы можете преобразовать NULL
, сгенерированный SUM()
в 0
для добавления.
Я бы порекомендовал вам приблизиться к сравнению дат:
select (select coalesce(sum(amount), 0)
from change_graphic
where change_date >= '2019-04-01' and
change_date < '2019-05-01'
) +
(select coalesce(sum(provision), 0)
from contracts
where accepted = 0 and
date >= '2019-04-01' and
date < '2019-05-01'
);
Это позволяетMySQL для использования индекса в столбце даты, если соответствующий индекс доступен.