HOME > 即効テクニック > AccessVBA > クエリ・SQL > 重複したレコードを除く(GROUP BY句)

即効テクニック

クエリ・SQL

重複したレコードを除く(GROUP BY句)

(Access 2000/2002)
●概要●
GROUP BY句を使用して指定したフィールドでグループ化し、重複したレコードを排除します。
サンプルでは「部署コード」でグループ化し、「社員テーブル」から一意な「部署コード」を選択します。
●サンプル●
'重複したレコードを除く(GROUP BY)
Public Sub Sample()

    Dim myDB As Database
    Dim myRS As DAO.Recordset
    Dim mySQL As String

    'SQLステートメントを定義する
    mySQL = "SELECT 部署コード FROM 社員テーブル GROUP BY 部署コード ;"

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
    'レコードセットの内容を表示する
    Do Until myRS.EOF
        Debug.Print myRS!部署コード
        myRS.MoveNext
    Loop
    'レコードセットを閉じる
    myRS.Close

End Sub
●補足●
結果は[イミディエイト]ウィンドウに表示されます。
GROUP BY句を使用しているときにSELECT句で指定できるのは、グループ化したフィールドとグループ関数のみです。GRUOP BY句でグループ化していないフィールドをSELECT句で指定するとエラーとなります。

(例)次のSELECTステートメントはエラーとなります。SELECT 社員コード,部署コード FROM 社員テーブル GROUP BY 社員コード;