Mysql
 sql >> Database >  >> RDS >> Mysql

unisci una riga a tutte le righe e restituisce tutte le righe

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) .