• ベストアンサー
  • すぐに回答を!

Accessユニオンクエリーで2つのテーブルを集計

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 このような結果になってしまうのですが・・

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

おしい。もう少しです。 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 コード; でも、大丈夫だと思います。

共感・感謝の気持ちを伝えよう!

その他の回答 (3)

  • 回答No.4

まず、提示された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)保存して閉じる ・・・以上です。

共感・感謝の気持ちを伝えよう!

  • 回答No.3

#1、#2です 大事なものが抜けてましたね 各 SELECT で FROM が抜けてましたね。 SELECT Aテーブル.コード1 AS コード,Aテーブル.値 FROM Aテーブル のように がんばっていきましょう 動いたっていう部分は、疑いもなく流用してしまうので・・・ごめんなさい

共感・感謝の気持ちを伝えよう!

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Accessのユニオンクエリーで3つのクエリを集計

    Accessのユニオンクエリーで3つのクエリを集計したいのですが Aクエリ 氏名  役員名  就任月  任期 山田   会長   24    1 田中  副会長   24    1 Bクエリ 氏名  役員名  就任月  任期 山田  副会長   12    0 田中   理事   24    1 Cクエリ 氏名  役員名  就任月  任期 山田   会長    24    1 田中  副会長   24    1 結果 氏名  役員名  就任月  任期 山田   会長    48    2 山田  副会長   12    0 田中  副会長   48    2 田中   理事   24    1 このような結果を得ることは出来ますでしょうか? SELECT [氏名], [役員名],[就任月],[任期] FROM [Aクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Bクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Cクエリ名]; このように記述すると 氏名  役員名  就任月  任期 山田   会長   24    1 山田  副会長   12    0 山田   会長   24    1 田中  副会長   24    1 田中   理事   24    1 田中  副会長   24    1 このような結果になってしまうのですが・・

  • Access 2000、ユニオンクエリーがどうしても出来ない!

    初歩の質問ですが、ユニオンクエリーが出来ません。 やりたい事は非常に単純です↓↓ 1:テーブル1、テーブル2、テーブル3があります。 2:各テーブルのデータ内容は様々ですが、共通項目として「品番」を持っています。但しテーブル1は「製品名」、テーブル2と3は「品番」という項目名になっています。 3:各テーブル内に、品番が幾つ入っているか、集計クエリでカウントします。項目名が違うので以下のように処理しました。  <テーブル1の場合>    フィールド|品番のカウント: 製品名|タイトル: "テーブル1"    テーブル |テーブル1     集  計 |カウント  <テーブル2(或いは3)の場合>    フィールド|品番のカウント: 品番|タイトル: "テーブル2"    テーブル |テーブル2     集  計 |カウント 4:3の集計クエリーを繋ぎ、テーブル1~3の品番件数を一気に表示させたい  <ユニオンクエリの内容>     SELECT *     from Q0_カウント_テーブル1     UNION select *     from Q0_カウント_テーブル2     UNION select *     from Q0_カウント_テーブル3; 5:私の予想としてはこんな風↓↓出てくるはずだったのですが・・・     品番のカウント| タイトル     ------------------------------        30   | テーブル1        20   | テーブル2        23   | テーブル3  6:結果は「From句の間違いです」と出ます。他の質問も見ましたが、自分のSQLのどこを直せば良いのかわかりません・・・教えてください!

  • ACCESSユニオンクエリから新テーブルを

    ACCESS2007/2010で、ユニオンクエリ(10個のテーブルをつないだ)から新テーブルを作りたいのですが、検索で調べて、なかなかピタリと説明してくれているサイトが見つかりません。。。 「ユニオンクエリ01」の指定 作成-クエリデザイン、閉じる、テーブルの作成 辺りをいじるんだと思われますが、 どなたか正確にナビして頂けませんでしょうか?

  • ユニオンクエリの結果をテーブルに書き出したい

    お世話になります。 Access2000で作成しています。 テーブル作成クエリと同じような形で、 ユニオンクエリの結果をテーブルに書き出したいのですが、 どのようにすればできるでしょうか? SQLの形を直接いじるような方法でも結構ですので 宜しくお願い致します。

  • ACCESSのクロス集計クエリについて

    ACCESS2000のクロス集計クエリで超初歩的な質問なのですが、、 こんなテーブルがあります。 メーカー  商品名 A社    テレビ B社    テレビ A社    ラジオ A社    テレビ これをACCESSのクロス集計クエリでこんな感じにしたいです。 メーカー  商品名   集計 A社    テレビ   2 A社    ラジオ   1 B社    テレビ   1 エクセルでは、行見出しに「メーカー」と「商品名」を入れて値に「メーカー」か「商品名」どちらかを入れれば希望通りの結果になるのですが、ACCESSのクロス集計では、列見出しに必ず入れないとエラーが出るようです。入れなくても良い方法かもっといい方法がありましたらご教授ください。   

  • クエリでのデータ更新について

    ACCESS2000で更新クエリの質問です。 フィールドの値の合計、カウントなどの集計値を計算するクエリから取り出された値を、更新クエリでデータを更新したいのですが、 「更新可能なクエリでありません」とエラーがでます。 LOOPする方法もあるのですが、できればクエリで一括更新したいと思います。 どなたかご教授お願いします。 やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> コード  個数 1     1 1     2 1     3 2     4 2     4 3     5 3     6 <Bテーブル> コード  個数 1      2      3    ↓↓↓更新後 <結果:Bテーブル>   コード  個数 1     6 2     8 3     11

  • ACCESS2000 ユニオンクエリーで、同一データについて

    こんにちは。 ACCESS2000で、超初心者から初心者に脱皮中です。 倉庫管理の仕事をしています。 各地の倉庫から在庫データを提出してもらい、データ管理を行っています。 データの内容は 倉庫番号, 品番, 品名, 区分, 数量 です。 一括管理のために、各倉庫のデータをユニオンクエリーでつなぎます。 SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫1 UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫2 … UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫7; この中に、たまたますべてのデータが同一のデータが存在しました。 倉庫7,A00,食器洗剤,破損品,1 倉庫7,A00,食器洗剤,破損品,1 要するに、同じ倉庫に同じものが、同じ状態で同じ数量あったということです。 ユニオンクエリーの結果は、この片方しか表示してくれないのです。 同一データであっても並べて表示し、あとでクロス集計等をしたときに、数量2 と表示したいのですが、知恵をお貸しください。 ちなみにすべてのテーブルに、主キー等は設定していません。

  • unionの結果は集計はできないですよね。。。。

    【明細データ】と【変換テーブル】で、変換後明細データを作成 して、その結果を集計したいのですが、、、 下記の結果を求めるためにはSQLひとつで可能でしょうか? ※(3)の表まではunionで可能でしたが、unionでは集計はできないですよね。。。。 (1)【明細データ】 CODE VALUE AMOUNT A 1000 10000 B 2000 20000 C 3000 30000 D 4000 40000 E 1001 10000 F 2001 20000 G 3000 30000 H 4000 40000 (2)【変換テーブル】 VALUE1 VALUE2 1000 1001 2000 2001 (3)【変換後明細データ】 CODE VALUE AMOUNT A 1001 10000 B 2001 20000 C 3000 30000 D 4000 40000 E 1001 10000 F 2001 20000 G 3000 30000 H 4000 40000 (4)【SQL抽出結果】が欲しい VALUE AMOUNT 1001 20000 2001 40000 3000 60000 4000 80000

  • access クエリで集計した数値を別クエリで使いたい

    access2003で2000ファイル形式で以下のものを作っています。 テーブル「A」(フィールドは登録番号(主キー)、 書名) 「B」(登録番号(主キー)、 書名) がある。Aの「登録番号の最大値」(100とする)をクエリ(クエリ名「集計クエリ」)で集計して得た。 テーブルBの登録番号(1~30とする)を更新クエリで(1+100 ~ 30+100)に更新したい。そこでデザインビューで登録番号フィールド(テーブルB)の「レコードの更新」欄にビルダーで「[B]![登録番号]+[集計クエリ]![登録番号の最大値]」と入力して実行したら 実行できなかった。(仕方ないので「[B]![登録番号]+100」として実行したら更新できた。)今後もあるので「集計クエリ」で得た値を直接呼んで、更新クエリを実行したいのだが・・・。 わかりにくい質問で恐縮です。ご理解頂けたならば、ご教授ください。

  • ユニオンクエリで0と表示される。

    教えてください。 4つのテーブルをユニオンクエリでひとつにしたく以下のようにSQLに書きました。 SELECT ID AS フィールド1 ,No AS フィールド2, Remark AS フィールド3 FROM テーブル1 UNION ALL SELECT ID,No,Remark FROM テーブル2 UNION ALL SELECT ID,No,Remark FROM テーブル3 UNION ALL SELECT ID,No,Remark FROM テーブル4 フィールド2のNOには数字が入っているのですがフィールド2の列にはすべて0と表示されて数字がででてきません。ID(オートナンバー型)とRemark(短いテキスト型)はちゃんと表示されます。もとのテーブル1と2のNoは数値型 テーブル3と4のNoは短いテキスト型です。なにが原因でどうしたら数値が表示されるようになりますか?