HOME > 即効テクニック > AccessVBA > クエリ・SQL > SQLでグループ化 その2(group order)

即効テクニック

クエリ・SQL

SQLでグループ化 その2(group order)

(Access 97)
●概要●
SQL文を使用して条件付のグループ化を行います。
GROUP BY 句に続く属性に指定されたフィールドがグループ化、つまり指定されたフィールドについて同じ値を持つ組の集合体が作成されます。
このときORDER BY句を用いるとグループ化のソート条件を指定することができます。ここではデータベース「NorthWIND.MDB」のテーブル「商品」において仕入れ先毎にグループ化し、そのグループ内の在庫数の合計が多い順にソートしたクエリを作成します。
●サンプルプログラム●
Private Sub group_order()
 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 仕入先コード " & "ORDER BY SUM(在庫) DESC"
 
 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
●動作確認●
「新規クエリ」が以下の例のように新たに作成されます。

仕入先         総在庫数
谷津坂商店株式会社      300
山手堂食品          300
横山株式会社        200
杵屋カレー          200
武蔵物産株式会社        200
早稲田フードサービス    200
北国ラーメン        200
東京コーヒー        188
丸山マート          170
北山フーズ          160
日向食品株式会社        160
   …
丸鈴マリンフーズ         29
讃岐商店株式会社         20
一休ミート           20
寿々木商店株式会社       10
尾張堂株式会社       10
加賀屋株式会社       10
不二よし              0