●概要●
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 社員コード;