Access で実行中の集計クエリを作成する方法

注意

Office 365 用リソース は、 エンタープライズ向け Microsoft 365 アプリに名前変更されています。 この変更の詳細については、 このブログの投稿を参照してください。

上級: 高度なコーディング、相互運用性、およびマルチユーザーのスキルが必要です。

この記事は、Microsoft Office Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイルに適用されます。

まとめ

この記事では、実行中の集計クエリの作成に使用できる2つの方法について説明します。 累計クエリとは、各レコードの合計が、そのレコードと以前のレコードの合計値になるクエリのことです。 この種のクエリは、グラフまたはレポートに、レコードのグループ (または一定期間にわたる) の累積合計を表示するのに便利です。

メモこの記事で使用されている手法のデモンストレーションは、サンプルファイル Qrysmp00 で確認できます。

詳細情報

方法 1

最初のメソッドは、DSum 関数とクエリの抽出条件を使用して、時間の経過と共に累計を作成します。 DSum 関数は、カレントレコードと以前のレコードを合計します。 クエリが次のレコードに移動すると、DSum 関数が再度実行され、累積合計が更新されます。

次のサンプルクエリは、サンプルデータベース Northwind のOrdersテーブルを使用して、1997の各月の運送料の累計を作成します。 パフォーマンス上の理由から、サンプルデータは1年に制限されています。 DSum 関数はクエリ内のすべてのレコードに対して1回実行されるため、クエリの処理が完了するまで数秒かかる場合があります (コンピューターの速度によって異なります)。 このクエリを作成して実行するには、次の手順を実行します。

  1. サンプルデータベース Northwind.mdb を開きます。

  2. 新しい選択クエリを作成し、 Ordersテーブルを追加します。

  3. [表示] メニューの [集計] をクリックします。

    メモAccess 2007 で、[デザイン] タブの [表示/非表示] グループの [集計] をクリックします。

  4. クエリのデザイングリッドの最初の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、[表示] ボックスで次のように選択します。

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックスの式が表示され、[受注日] フィールドの年の部分が並べ替えられます。

  5. クエリデザイングリッドの2番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、[表示] ボックスで次のように選択します。

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックス内の式は、受注日フィールドの月部分を並べ替えて、1 ~ 12 の整数値で表示します。

  6. クエリデザイングリッドの3番目の列で、[フィールド] ボックスに次の式を入力し、[合計] ボックスと [表示] ボックスで次のように選択します。

    メモ次の例では、行の末尾にあるアンダースコア (_) を行連結文字として使用しています。 この例を再作成するときは、アンダースコアを行末から削除してください。

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    [フィールド] ボックス内の式は、DSum () 関数を使用して、AMonth フィールドと AYear フィールドの値がクエリで処理されている現在のレコード以下である場合に、[運送料] フィールドを合計します。

  7. クエリデザイングリッドの4番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、[表示] ボックスで次のように選択します。

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックスの式は、1月、2月、3月などのテキスト形式で各月を表示します。

  8. クエリデザイングリッドの5番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[抽出条件]、[表示] ボックスで次のように選択します。

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    [フィールド] ボックスの式は、クエリの recordset に対してフィルター処理を行い、1997からのデータのみを含めます。

  9. クエリを実行します。 RunTot フィールドには、集計が実行されている次のレコードが表示されることに注意してください。

    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238.98 Jan
    1997 2 3840.43 Feb
    1997 3 5729.24 Mar
    1997 4 8668.34 Apr
    1997 5 12129.74 May
    1997 6 13982.39 Jun
    1997 7 17729.29 Jul
    1997 8 22204.73 Aug
    1997 9 26565.26 Sep
    1997 10 32031.38 Oct
    1997 11 36192.09 Nov
    1997 12 42748.64 Dec
    

方法 2

2番目の方法では、集計クエリを DSum () 関数と共に使用して、グループ全体の累計を作成します。

次のサンプルクエリでは、Orders テーブルを使用して、従業員1人あたりの運送料の合計、および運送料の累計を計算します。 クエリを作成して実行するには、次の手順を実行します。

  1. サンプルデータベース Northwind.mdb を開きます。

  2. 新しい選択クエリを作成し、Orders テーブルを追加します。

  3. [Viewmenu メニューの [集計] をクリックします。

    メモAccess 2007 で、[デザイン] タブの [表示/非表示] グループの [集計] をクリックします。

  4. クエリデザイングリッドの最初の列で、[フィールド] ボックスに次のフィールドを追加し、[合計] ボックスと [表示] ボックスで次のように選択します。

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    このフィールドは、EmployeeID でデータをグループ化します。

  5. クエリデザイングリッドの2番目の列で、[フィールド] ボックスに次のフィールドを追加し、[合計] ボックスと [表示] ボックスで次のように選択します。

    Field: Freight
    Total: Sum
    Show: Yes
    

    このフィールドには、運送料データの合計が入力されます。

  6. クエリデザイングリッドの3番目の列で、[フィールド] ボックスに次の式を入力し、[合計] ボックスと [表示] ボックスで次のように選択します。

    メモ次の例では、行の末尾にあるアンダースコア (_) を行連結文字として使用しています。 この例を再作成するときは、アンダースコアを行末から削除してください。

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    [フィールド] ボックスの式は、DSum () 関数を使用して、EmployeeID が現在の EmpAlias より小さいか等しい場合に [運送料] フィールドを合計し、フィールドの値をドル単位に設定します。

  7. クエリを実行します。 RunTot フィールドには、集計が実行されている次のレコードが表示されることに注意してください。

    Employee SumOfFreight RunTot
    -------------------------------------------------
    Davolio, Nancy $8,836.64 $8,836.64
    Fuller, Andrew $8,696.41 $17,533.05
    Leverling,Janet $10,884.74 $28,417.79
    Peacock, Margaret $11,346.14 $39,763.93
    Buchanan, Steven $3,918.71 $43,682.64
    Suyama, Michael $3,780.47 $47,463.11
    King, Robert $6,665.44 $54,128.55
    Callahan, Laura $7,487.88 $61,616.43
    Dodsworth, Anne $3,326.26 $64,942.69