Возможно, это связано с разницей между объединениями INNER
и OUTER
. Внутреннее соединение требует, чтобы была соответствующая строка (соответствует условию соединения), внешнее соединение не имеет такого требования: оно будет возвращать столбцы с NULL.
Кажется, вы хотите присоединиться к OUTER:
SELECT s.identifierExt as StoreID,
YEAR(o.creation) AS Year,
MONTHNAME(o.creation) AS Month,
MONTH(o.creation) AS IDMonth,
ROUND(SUM(o.price), 2) AS Sales
FROM store s
LEFT OUTER JOIN order o ON o.store = s.id
AND (o.creation < '2018-09-13 00:00:00')
AND (o.place NOT IN ('PENDING','CANCELLED'))
AND (o.creation > '2018-01-12 00:00:00')
GROUP BY Year, Month, StoreID
ORDER BY IDMonth, StoreID ASC
Таким образом, вы также получите магазины без заказов.
Также см. этот ответ о разнице между внутренними и внешними объединениями