Een CROSS JOIN gebruiken:-
SELECT
o.id_outlet,
s_main.periode,
o.branch,
count(msisdn)
FROM
(
SELECT DISTINCT SUBSTRING(date,1,7) AS periode
FROM sales
) s_main
CROSS JOIN outlet o
LEFT OUTER JOIN sales s
ON s_main.periode = SUBSTRING(s.date,1,7)
AND o.id_outlet = s.id_outlet
WHERE (o.STATUS LIKE 'STREET%')
GROUP BY s_main.periode, o.branch, o.id_outlet
Als je een tabel met datums hebt, kun je die gewoon gebruiken in plaats van de subquery om de datums te krijgen (wat ook het potentiële probleem vermijdt van het niet hebben van een datum in de resultaten voor een maand waarin er geen verkoop is geweest voor een verkooppunt) .