HOME > 即効テクニック > Access一般機能 > クエリ・SQL > ユニオンクエリーで集計結果を最終行に追加する

即効テクニック

クエリ・SQL

ユニオンクエリーで集計結果を最終行に追加する

(Access 97/2000)
●概要●
ユニオンクエリーを使うと、複数のテーブルやクエリーを縦につなげることができますが、これを利用して1テーブルの全レコードと、その最後に合計行を1行追加するクエリーを作成してみます。

●手順●
(1)以下の定義で「t_価格表」テーブル を作成します。
    [フィールド名]  [データ型]
    部品ID          数値型
    名称            テキスト型
    価格            数値型

(2)「t_価格表」テーブル に、以下のようなサンプルデータを入力します。

    [部品ID]  [名称]       [価格]
     1        PC本体        98000
     2        プリンタ      29800
     3        TA            14800

(3)クエリーを新規作成し、メニューの[表示]-[SQLビュー]で、以下のSQL文を手入力します。

      TABLE t_価格表
      UNION ALL
      SELECT Null, "合計", Sum(t_価格表.価格)
      FROM t_価格表;

(4)クエリーを保存し、データシートビューで開くと、以下のように最終行に価格合計が追加された形で表示されます。

    [部品ID]  [名称]       [価格]
     1        PC本体        98000
     2        プリンタ      29800
     3        TA            14800
              合計         142600


●備考●
通常、集計値は各フォームのフォームフッターやレポートのグループフッターで表示させればよいので、ユニオンクエリーを使う必要はありませんが、クエリーの結果をそのまま(Excelシート等に)エクスポートする処理等で、この方法は功を奏します。
 UNION(ALL)述語の前のテーブル(クエリー)と後のテーブル(クエリー)はフィールド数を揃えておく必要があります。サンプルではt_価格表テーブルが3フィールドあるので、UNION ALLの後も、SELECT ・・,・・,・・ と3フィールドに揃え、[価格]フィールドと同じ列に[合計値]が表示されるようにしています。
なお、フィールド名は最初に記述されたテーブル(クエリー)のフィールド名になります。