●概要●
SQL文を使用して条件付のグループ化を行います。
GROUP BY 句に続く属性に指定されたフィールドがグループ化、つまり指定されたフィールドについて同じ値を持つ組の集合体が作成されます。
このとき、HAVING句を用いるとグループ化の条件を指定することができます。
ここではデータベース「NorthWIND.MDB」のテーブル「商品」において仕入れ先毎にグループ化し、そのグループ内の在庫数の合計が100以上のグループの仕入先コードとグループ内の在庫数の合計を表示させるクエリを作成します。
●サンプルプログラム●
Private Sub group_having()
Dim cn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim cat As New ADOX.Catalog
Dim strSQL As String
Set cn = New ADODB.Connection
With cn
.Provider = "microsoft.jet.oledb.4.0"
.Open "D:\NorthWIND.MDB"
End With
cat.ActiveConnection = cn
strSQL = "SELECT 仕入先コード,SUM(在庫) as 総在庫数 FROM 商品 _
GROUP BY 仕入先コード " & "HAVING SUM(在庫) > 100"
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = strSQL
cat.Views.Append "新規クエリ", cmd
cn.Close
Set cmd = Nothing
Set cn = Nothing
Set cat = Nothing
End Sub
●動作確認●
「新規クエリ」が以下の例のように新たに作成されます。
仕入先 総在庫数
東京コーヒー 188
恵比寿株式会社 140
サクラ食品販売株式会社 132
北山フーズ 160
早稲田フードサービス 200
武蔵物産株式会社 200
杵屋カレー 200
谷津坂商店株式会社 300
北国ラーメン 200
横山株式会社 200
山手堂食品 300
丸山マート 170
日向食品株式会社 160