Access の GROUP BY 句は、指定したフィールド リストの中で同じ値を持つレコードを 1 つのレコードに結合します。 SUM 関数や COUNT 関数などの SQL 集計関数を SELECT ステートメントに含めている場合は、レコードごとに集計値が作成されます。
構文
SELECT <fieldlist>
FROM <table> WHERE <criteria> [GROUP BY <groupfieldlist>]GROUP BY 句を使用する SELECT ステートメントには、次の指定項目があります。
引数 |
説明 |
fieldlist |
取得する 1 つ以上のフィールドの名前。フィールド名の別名、SQL 集計関数、選択述語 (ALL、DISTINCT、DISTINCTROW、および TOP)、または SELECT ステートメント オプションも指定できます。 |
table |
レコードを取得するテーブルの名前。 |
criteria |
抽出条件。 ステートメントに WHERE 句が含まれている場合、Microsoft Access データベース エンジンは、WHERE 句の条件に従ってレコードを抽出した後に値をグループ化します。 |
groupfieldlist |
レコードをグループ化するために使用される最大 10 個のフィールドの名前。 groupfieldlist のフィールド名の順序によって、最上位から最下位まで、グループ化のレベルが決まります。 |
解説
GROUP BY 句は省略可能です。
SELECT ステートメントで SQL 集計関数を指定していない場合、集計値は算出されません。
GROUP BY フィールドの Null 値は省略されずにグループ化されます。 ただし、Null 値は SQL 集計関数では評価されません。
グループ化しない行を除く場合は、WHERE 句を使用します。また、グループ化されているレコードにフィルターを適用する場合は、HAVING 句を使用します。
SELECT ステートメントに 1 つでも SQL 集計関数を指定した場合は、FROM 句に挙げたテーブルのフィールドのうちメモ型 (Memo) や OLE オブジェクト型 (OLE Object) 以外のフィールドは、SELECT ステートメントに入っていないものでも、すべて GROUP BY 句のフィールド リストに入れることができます。 Microsoft Access データベース エンジンは、メモ型 (Memo) や OLE オブジェクト型 (OLE Object) のフィールドをグループ化できません。
SELECT ステートメントのフィールド リストに指定したすべてのフィールドは、GROUP BY 句、または SQL 集計関数の引数のどちらかに指定する必要があります。