複数値フィールドを使用してクロス集計クエリを作成する方法

難易度 : 中。基本的なマクロ、コーディング、相互運用性に関する知識が必要です。


この資料は Microsoft Access データベース (.mdb) についてのみ記述したものです。


Microsoft Access 2000 については、次の資料を参照してください。209143
Microsoft Access 97 については、次の資料を参照してください。109939

概要

Microsoft Access のクロス集計クエリでは、値としてフィールドまたは計算結果を 1 つだけ指定することができますが、クエリで複数の値を表示することが必要な場合もあります。


以下の例では、会社ごとの受注数および受注総額を示す 2 列の情報を、年ごとに表示しています。

Company Name 1998 Orders 1998 Total 1999 Orders 1999 Total
--------------------------------------------------------------
ABC Company 12 $855.00 15 $1010.25
XYZ Company 1017 $22045.57 1050 $25345.29
この種のクエリは、複数値フィールド クエリと呼ばれる場合があります。

詳細

複数値フィールドを使用したクロス集計クエリを作成するには、計算対象の各値に対して個別にクロス集計クエリを作成する必要があります。次に、選択クエリを使用して、これらのクロス集計クエリを結合し、目的の結果を表示します。


次の例では、Northwind.mdb サンプル データベースを使用して、この資料の「概要」の例に類似した結果を表示するクエリを作成しています。ここでは、会社ごとの各年の受注数と受注総額を表示します。
  1. Northwind.mdb サンプル データベースを開き、受注テーブル、受注明細テーブル、および得意先テーブルに基づいて次のクロス集計クエリを作成します。

    クエリ: Order Total
    ------------------
    種類 : クロス集計クエリ
    結合 : 得意先.[得意先コード] <-> 受注.[得意先コード]
    結合 : 受注.[受注コード] <-> 受注明細.[受注コード]

    フィールド : 得意先名
    テーブル : 得意先
    集計 : グループ化
    行列の入れ替え : 行見出し

    フィールド : 式1: Year([受注日]) & " " & "Order Total"
    テーブル :
    集計 : グループ化
    行列の入れ替え : 列見出し

    フィールド : 式2: Sum(CCur([単価]*[数量]*(1-[割引])))
    テーブル :
    集計 : 演算
    行列の入れ替え : 値
  2. このクエリを Order Total として保存します。
  3. 受注テーブルおよび得意先テーブルに基づいて、次のクロス集計クエリを作成します。

    クエリ : Order Count
    ------------------
    種類 : クロス集計クエリ
    結合 : 得意先.[得意先コード] <-> 受注.[得意先コード]

    フィールド : 得意先名
    テーブル : 得意先
    集計 : グループ化
    行列の入れ替え : 行見出し

    フィールド : 式1: Year([受注日]) & " " & "Order Count"
    テーブル :
    集計 : グループ化
    行列の入れ替え : 列見出し


    フィールド : 受注コード
    テーブル : 受注
    集計 : カウント
    行列の入れ替え : 値
  4. このクエリを Order Count として保存します。
  5. Order Total クロス集計クエリおよび Order Count クロス集計クエリに基づいたクエリを作成します。結果として表示する年次に対して、"得意先名" フィールド、Order Total フィールド、および Order Count フィールドを使用します。次の例では、Microsoft Access で Order Total および Order Count の最後の 2 年を使用しています。

    クエリ : Multiple Values
    ----------------------
    結合 : Order Total.[得意先名] <-> Order Count.[得意先名]

    フィールド : 得意先名
    テーブル : Order Count

    フィールド : 1997 Order Count
    テーブル : Order Count

    フィールド : 1997 Order Total
    テーブル : Order Total

    フィールド : 1998 Order Count
    テーブル : Order Count

    フィールド : 1998 Order Total
    テーブル : Order Total
  6. 複数値クエリを実行すると、次のようなテーブルが表示されます。

    1997 Order 1997 Order 1998 Order 1998 Order
    得意先 Count Total Count Total
    ------------------------------------------------------------------
    アリス亭 3 ¥118,300 1 ¥94,700
    イルカランド 2 ¥116,100 1 ¥82,800
    コーヒーハウスフェンス 2 ¥194,000 1 ¥76,300
    : 結合するように指定されているフィールドが、クエリで結合する複数のテーブルにある場合、テーブル名を式に追加する必要があります。たとえば、手順 1. を以下のように変更します。

    Year([受注日]) & " " & "Order Total"
    上記を次のように変更します。

    Year([受注].[受注日]) & " " & "Order Total"
    テーブル名を [テーブル] 行に追加すると、構文エラーが発生します。テーブル名をまったく入力しないと、参照があいまいであるというエラーが表示されます。

関連情報

クロス集計クエリの詳細については、[ヘルプ] メニューの [Microsoft Access ヘルプ] をクリックします。次に、Office アシスタントまたはアンサー ウィザードにクロス集計クエリと入力し、[検索] をクリックして表示されるトピックを参照してください。

プロパティ

文書番号:304458 - 最終更新日: 2008/11/11 - リビジョン: 1

フィードバック