Usando una UNIÓN CRUZADA:-
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
Si tiene una tabla de fechas, puede usarla en lugar de la subconsulta para obtener las fechas (lo que también evita el posible problema de no tener una fecha en los resultados de un mes en el que no ha habido ventas para ningún punto de venta) .