SSブログ

クエリ UNIONの例 [クエリ]

 複数のクエリの結果を別々に取得するのではなく、1つのクエリの結果のようにまとめて取得したい場合、UNION句を使用します。

 ACCESSのクエリでUNION句を利用する場合、いつものクエリデザインの画面ではできません。
 SQL編集画面にして、直接SQLを記述する必要があります。
 いきなりSQLばりばりの例ではわかりにくいと思いますので、クエリデザインを中心に使う場合の手順から説明したいと思います。

 サンプルデータは下図のとおり。

 商品名と金額の項目があるテーブルです。
 これの合計集計を行うクエリを作成し、UNIONで明細と合計行を一度に表示します。

 最初に、明細行のクエリを作成します。

 上図のように集計クエリを作成します。
 「T売上」テーブルをクエリデザインに追加します。
 一番左の列のフィールドに、「順番:1」と入力します。
 これは、合計の行を必ず一番最後に持ってくるためのものです。
 そして、「商品名」「金額」項目を下のグリッドに表示させます。
 このクエリを「Q明細」と言う名前で保存します。

 次に、合計集計を行うクエリを作成します。

 上図のように集計クエリを作成します。
 「T売上」テーブルをクエリデザインに追加して、「金額」項目を下のグリッドに表示させます。
 「集計Σ」アイコンをクリックして、集計クエリにします。
 金額項目の集計は、「合計」を指定します。
 金額項目の左列に、「順番:2」「商品名:"合計"」の列を作成します。
 このクエリを「Q合計」と言う名前で保存します。

 実行すると、合計の1レコードが返されます。

 次に、UNIONクエリを作成します。
 新規のクエリを開き、最初に表示される「テーブルの表示」ウィンドウを閉じます。

 左上の「SQL表示」アイコンをクリックします。
 画面がSQL入力画面に切り替わります。

 上図のように、下記のSQLを入力します

SELECT * FROM Q明細
UNION ALL 
SELECT * FROM Q合計

 「UNION ALL」と記述することに、気をつけてください。
 入力後、「Q明細合計」と言う名前で保存します。

 最後に、先程作成したQ明細合計を元にしたクエリを作成します。

 新規クエリを開き、「テーブルの表示」から「クエリ」タブをクリックし、「Q明細合計」を選択し、「追加」ボタンをクリックします。
 下のウィンドウに「Q明細合計」が表示されたら、「テーブルの表示」ウィンドウを閉じます。

 「順番」「商品名」「金額」項目を下のグリッドに配置します。
 「順番」列の「並べ替え」を、「昇順」に設定し、「表示」のチェックボックスを「OFF」にします。
 これでできあがり。

 実行結果。
 明細の後に、合計が連結された状態で、結果が表示されます。
 Q明細、Q合計の各クエリで設定した「順番」項目は、必ず合計行を一番最後に来るように、並べ替えを設定するために作成しました。

 ここまでの方法は、UNIONのクエリ以外、極力直接SQL書かずに済む手順を説明しました。
 その為、複数のクエリを作成してします。
 SQLで作成する場合、全部を1つのクエリで作成することもできます。

SELECT 商品名 , 金額
FROM
(
SELECT 1 AS 順番 ,商品名, 金額
FROM T売上

UNION ALL

SELECT 2 AS 順番 , "合計" AS 商品名, SUM(T売上.金額) AS 金額
FROM T売上
)
ORDER BY 順番

 クエリの本数が増えると管理が煩雑になりがちですので、SQLに慣れてきたら、簡単な物はSQLで作成しても良いと思います。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。