Ich habe eine MEMBERS
Tabelle mit den folgenden relevanten Spalten:Wie kann ich Aggregationsergebnisse aus mehreren SQL SELECTS zusammenführen?
Name
JoinDate
Level --1=Gold,2=Silver,3=Bronze**
Ich mag eine einzelne Abfrage erstellen, eine Mitgliedschaft Zusammenfassung zurückzugeben, die die Gesamtzahl aufgeführt, die nach Jahr und Mitgliedschaftsstufe verbunden. Grundsätzlich wären die Spalten in meinem resultset so etwas wie diese:
| YEAR | GOLD | SILVER | BRONZE | TOTAL |
Ich konnte die verschiedenen Zählungen pro Jahr für Gold-bekommen, Silber und Bronze Mitglieder jeweils die folgenden drei Abfragen mit:
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS GOLD FROM Members
WHERE Level=1 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS SILVER FROM Members
WHERE Level=2 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS BRONZE FROM Members
WHERE Level=3 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
I könnte auch die Summen unter Verwendung einer ähnlichen Abfrage erhalten:
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS TOTAL FROM Members
GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
Mein Problem ist, ich einen Weg, nicht diese alle zu vereinfachen in einer einzigen Abfrage gefunden. Wie wird das gemacht?