sql >> Databasteknik >  >> RDS >> Mysql

slå samman en rad med alla rader och returnera alla rader

Använda 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

Om du har en tabell med datum kan du bara använda den istället för underfrågan för att få datumen (vilket också undviker det potentiella problemet med att inte ha ett datum i resultaten för en månad där det har varit noll försäljning för någon butik) .



  1. Använda alias för en fråga för att ansluta till en annan tabell MySQL

  2. LAST_INSERT_ID() hur det fungerar i fleranvändarmiljö

  3. Kan inte infoga byte[] i MySQL med java

  4. Hur KOPIERA IMPORTERA en json-fil till postgres?