J'ai une table MEMBERS
avec les colonnes pertinentes suivantes:Comment joindre les résultats d'agrégation de plusieurs SQL SELECTS?
Name
JoinDate
Level --1=Gold,2=Silver,3=Bronze**
Je veux créer une seule requête pour renvoyer un résumé d'adhésion qui indique le nombre total qui se sont joints par année et par niveau d'adhésion. Au fond, les colonnes de mon resultset serait quelque chose comme ceci:
| YEAR | GOLD | SILVER | BRONZE | TOTAL |
je pouvais obtenir les différents chefs d'accusation par an pour l'or, les membres d'argent et de bronze en utilisant respectivement les 3 requêtes suivantes:
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 pourrait également obtenir les totaux en utilisant une requête similaire:
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS TOTAL FROM Members
GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
Mon problème est que je ne l'ai pas trouvé un moyen de simplifier tout cela en une seule requête. Comment cela est-il fait?