アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessのユニオンクエリーで2つのテーブルを集計したいのですが

Aテーブル
コード1 値
1    5
1    2

Bテーブル
コード2 値
1    1
2    3

結果
コード 値
1    8
2    3

このような結果を得ることは出来ますでしょうか?

SELECT Aテーブル.コード1 AS コード,Aテーブル.値
UNION
SELECT Bテーブル.コード2 AS コード,Bテーブル.値

このように記述すると
コード 値
1    5
1    2
1    1
2    3
このような結果になってしまうのですが・・

A 回答 (4件)

おしい。

もう少しです。


SELECT Aテーブル.コード1 AS コード,Aテーブル.値
UNION
SELECT Bテーブル.コード2 AS コード,Bテーブル.値

を例えば「Q1」に置き換えたとすると

SELECT コード, Sum(Q1.値) AS 値
FROM Q1
GROUP BY コード;

で結果は得られると思います。
「コード」でグループ化して、「値」を合計(Sum) してあげれば・・・


で、Q1 部分を上記のもので置き換えると

SELECT コード, Sum(Q1.値) AS 値
FROM (
SELECT Aテーブル.コード1 AS コード,Aテーブル.値
UNION
SELECT Bテーブル.コード2 AS コード,Bテーブル.値
) AS Q1
GROUP BY コード;

でいけると思います。

なお、UNION する時は、2つ目以降は AS を書かなくても良いんで

SELECT コード, Sum(Q1.値) AS 値
FROM (
SELECT Aテーブル.コード1 AS コード,Aテーブル.値
UNION
SELECT Bテーブル.コード2,Bテーブル.値
) AS Q1
GROUP BY コード;

でも、大丈夫だと思います。
    • good
    • 3

まず、提示されたSQL文ですが、元のテーブルを示す「From句」が抜けています(汗)



<現在>
SELECT Aテーブル.コード1 AS コード,Aテーブル.値
UNION
SELECT Bテーブル.コード2 AS コード,Bテーブル.値

<修正後>
SELECT Aテーブル.コード1 AS コード,Aテーブル.値 From Aテーブル
UNION
SELECT Bテーブル.コード2 AS コード,Bテーブル.値 From Bテーブル

<修正後(省略版)>
SELECT コード1 AS コード, 値 From Aテーブル
UNION
SELECT コード2, 値 From Bテーブル

※1つのSelect文内にテーブル/クエリが1つだけの場合、「テーブル名.フィールド名」
  の「テーブル名.」部分は省略できます。


さて、本題ですが・・・私自身がそうだったのですが(汗)、「ユニオンクエリは比較的
単純な構文なのでいいけれど、集計などになると、ちょっと・・・」という場合は、
デザインビューを利用することも可能です。

1つは、「(テーブルに代えて)ユニオンクエリを元にした、新規クエリの作成」です。
もうひとつは、「ユニオンクエリそのものから、デザインビューで編集可能なクエリ」に
持っていく方法です。

前者は簡単だと思いますので省略しますが、今後のことを考えて、後者について
その手順を紹介してみます。

【手順】
1)元となるユニオンクエリをSQL文で作成
 (→念のため、『!』(実行)ボタンを押して結果が表示されるか確認)
2)そのSQL文の前後に、それぞれ「Select * From (」と「) As Temp」を追記
 例)

Select * From (
SELECT コード1 AS コード, 値 From Aテーブル
UNION
SELECT コード2, 値 From Bテーブル
) As Temp

3)ツールバーなどにある、デザインビューに切り替えるためのボタンをクリック
4)ユニオンクエリとして記述したクエリとそのフィールドが、通常のテーブルや
 クエリと同様に表示されるので、通常の選択クエリや集計クエリなどと
 同様に編集
5)保存して閉じる


・・・以上です。
    • good
    • 3

#1、#2です



大事なものが抜けてましたね

各 SELECT で FROM が抜けてましたね。

SELECT Aテーブル.コード1 AS コード,Aテーブル.値 FROM Aテーブル

のように


がんばっていきましょう

動いたっていう部分は、疑いもなく流用してしまうので・・・ごめんなさい
    • good
    • 0

#1です。

補足です

UNION だと 同じレコードがあったら1つにまとめられるので
同じものがあっても、別として扱いたい時には、
UNION ALL にします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A