La clause GROUP BY dans Access combine en un seul enregistrement les enregistrements comportant des valeurs identiques dans la liste de champs spécifiée. Une valeur de synthèse est créée pour chaque enregistrement si vous incluez une fonction d’agrégation SQL, par exemple Somme ou Compte, dans l’instruction SELECT.
Syntaxe
SELECT listechamps
FROM table WHERE critères [GROUP BY listechampsgroupe]Une instruction SELECT contenant une clause GROUP BY se compose des éléments suivants :
Composant |
Description |
listechamps |
Nom du ou des champs à extraire avec leurs alias de noms de champs, fonctions d’agrégation SQL, prédicats de sélection (ALL, DISTINCT, DISTINCTROW ou TOP), ou autres options d’une instruction SELECT. |
table |
Nom de la table d'où sont extraits les enregistrements. |
critères |
Critères de sélection. Si l'instruction contient une clause WHERE, le moteur de base de données Microsoft Access regroupe les valeurs après avoir appliqué les conditions WHERE aux enregistrements. |
listechampsgroupe |
Noms des champs (10 au maximum) utilisés pour regrouper les enregistrements. L'ordre des noms de champs dans listechampsgroupe détermine les niveaux de regroupement, du plus élevé au plus bas. |
Notes
La clause GROUP BY est facultative.
Les valeurs de synthèse sont omises si l'instruction SELECT ne contient aucune fonction d'agrégation SQL.
Les valeurs Null des champs GROUP BY sont regroupées et ne sont pas omises. Toutefois, les valeurs Null ne sont évaluées dans aucune fonction d’agrégation SQL.
Utilisez la clause WHERE pour exclure les lignes que vous ne souhaitez pas regrouper et la clause HAVING pour filtrer les enregistrements après leur regroupement.
À moins de contenir des données de type Memo ou objet OLE, un champ d’une liste de champs GROUP BY peut faire référence à n’importe quel champ de n’importe quelle table répertoriée dans la clause FROM, même si celui-ci n’est pas inclus dans l’instruction SELECT, à condition toutefois que l’instruction SELECT inclue au moins une fonction d’agrégation SQL. Le moteur de base de données Microsoft Access ne peut pas faire porter des opérations d’agrégation sur des champs Memo ou objet OLE.
Tous les champs de la liste de champs SELECT doivent être inclus, soit dans la clause GROUP BY, soit dans une fonction d'agrégation SQL, sous forme d'arguments.