Access 中的 GROUP BY 子句将指定的字段列表中具有相同值的记录组合成一个记录。 如果在 SELECT 语句中包括 SQL 聚合函数(例如 Sum 或 Count),则会为每个记录创建汇总值。
语法
SELECT fieldlist
FROM table WHERE criteria [GROUP BY groupfieldlist]包含 GROUP BY 子句的 SELECT 语句由以下部分组成:
部分 |
说明 |
fieldlist |
要与任何字段名别名、SQL 聚合函数、选择谓词(ALL、DISTINCT、DISTINCTROW 或 TOP)或其他 SELECT 语句选项一起进行检索的字段的名称。 |
table |
从中检索记录的表的名称。 |
criteria |
选择条件。 如果语句包含 WHERE 子句,则在将 WHERE 条件应用于记录之后,Microsoft Access 数据库引擎对值进行分组。 |
groupfieldlist |
用来对记录进行分组的最多 10 个字段的名称。 groupfieldlist 中字段名称的顺序确定了从最高到最低的分组级别。 |
说明
GROUP BY 是可选的。
如果 SELECT 语句中没有 SQL 聚合函数,则省略汇总值。
GROUP BY 字段中的 Null 值将被分组,而不会省略。 但是,在任何 SQL 聚合函数中都不会计算 Null 值。
使用 WHERE 子句可以排除不想分组的行,使用 HAVING 子句则可以在分组记录之后筛选这些记录。
除非 GROUP BY 字段列表中的字段包含 Memo 或 OLE Object 数据,否则,假如 SELECT 语句包含至少一个 SQL 聚合函数,则 GROUP BY 字段列表中的字段就可以引用 FROM 子句所列出的任何表中的任何字段,无论 SELECT 语句是否包含该字段。 Microsoft Access 数据库引擎无法对“Memo”或“OLE Object”字段进行分组。
SELECT 字段列表中的所有字段都必须包括在 GROUP BY 子句中,或作为 SQL 聚合函数的参数包括在内。