Utilizzando un CROSS JOIN:-
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
Se hai una tabella di date, puoi semplicemente usarla invece della sottoquery per ottenere le date (che evita anche il potenziale problema di non avere una data nei risultati per un mese in cui non ci sono state vendite per qualsiasi punto vendita) .