HOME > 即効テクニック > AccessVBA > クエリ・SQL > SQLでグループ化1(group having)

即効テクニック

クエリ・SQL

SQLでグループ化1(group having)

(Access 97)
●概要●
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