即効テクニック |
●概要● 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