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

samle en række til alle rækker og returnere alle rækker

Brug af en 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

Hvis du har en tabel med datoer, så kan du bare bruge den i stedet for underforespørgslen til at få datoerne (hvilket også undgår det potentielle problem med ikke at have en dato i resultaterne for en måned, hvor der har været nul salg for enhver forretning) .



  1. Oracle Stored Procedure uden parameter ved hjælp af Nhibernate

  2. Vælg EMP med max SAL fra hver DEPT

  3. Hvorfor giver InnoDB åbenlyst falsk information om ledig plads

  4. Henter kun et fast antal rækker i MySQL