●概要●
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