sql >> Base de Datos >  >> RDS >> Mysql

unir una fila a todas las filas y devolver todas las filas

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