
複数のテーブルから値を合計出力するSQLについて
以下の様な3つのテーブルがあり、それぞれのテーブルから値を合計した結果を取得したいと思っております。
この場合のSQL文をご教授いただけないでしょうか?
拙い説明でお分かりに難いかと思いますが、何卒、宜しくお願いします。
●テーブル
t1(テーブル1)
id, 会員ID, 日付, 金額
t2(テーブル2)
id, 会員ID, 日付, 金額
t3(テーブル3)
id, 会員ID, 日付, 金額
●期待する結果
上記、テーブル内の会員ID、日付が同じものの金額を合計して取得。(1行で出力)
いずれかのテーブルに「会員ID」が一つしか存在しない場合も、「日付」、「金額」を取得して「合計金額」に反映。
もし、各テーブル、レコードの「金額」が「0」または「null」の場合は「0」として処理する。
●期待出力結果イメージ
会員ID | 日付 | 合計金額 |
--------------------------------
m001 | 2011/07/20 | 1500 |
--------------------------------
m001 | 2011/06/10 | 2000 |
--------------------------------
m002 | 2011/06/05 | 1000 |
--------------------------------
m003 | 2011/05/25 | 0 |
--------------------------------
m001 | 2011/03/05 | 3000 |
※「合計金額」は、「t1(テーブル1)」~「t3(テーブル3)」の中に含まれていた金額の合計。
No.1ベストアンサー
- 回答日時:
UNIONでt1,t2,t3でテーブルを1個に結合して
Group ByすればOK?
「金額」が「0」または「null」の場合は「0」はNVLで対応
Select 会員ID, 日付, NVL(SUM(金額),0) AS 合計金額 From (
Select 会員ID, 日付, 金額 From t1
UNION ALL
Select 会員ID, 日付, 金額 From t2
UNION ALL
Select 会員ID, 日付, 金額 From t3
)
Group By 会員ID, 日付
早々のご回答有難う御座います!!
試したところ、上手くいきました!!!
SQLの知識(だけではないですが(汗))が乏しく、全く思いつきませんでした。
本当に有難う御座いました。
No.3
- 回答日時:
mysql はインラインビューに明示的に別名をつけないといけないようですね。
SELECT t.会員ID, t.日付, SUM(t.金額) 合計金額
FROM
( SELECT 会員ID, 日付, 金額 FROM t1
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t2
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t3 ) t
GROUP BY 会員ID, 日付;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
結合したテーブルをSUMしたい
MySQL
-
MySQL: 複数テーブルのcount
MySQL
-
GROUP BYを行った後に結合したい。
Oracle
-
4
複数テーブルのGROUP BY の使い方を教えて下さい。
MySQL
-
5
2つのテーブルを結合して合計(SQL文)
SQL Server
-
6
2つのテーブルで引き算 postgres
PostgreSQL
-
7
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
8
SELECT 文 GROUP での1件目を取得
SQL Server
-
9
2つのテーブルのカウント結果を1行で取得
SQL Server
-
10
複数テーブルにわたるCOUNT
MySQL
-
11
【SQL】違うフィールド同士の集計をしたい
Oracle
-
12
【PHP】SQL文のSUM関数で出力した2つのデータを減算する方法を教えて下さい。
MySQL
-
13
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
14
SELECT/別テーブルのレコード数も取得したい
MySQL
-
15
sqlserverで集計結果をUPDATEしたいです
SQL Server
-
16
SELECTで1件のみ取得するには?
Oracle
-
17
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
18
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
19
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
20
構造が異なる二つのテーブルをunionで結ぶには?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
MySQLのDatetime型の検索方法
-
5
累計表示
-
6
サブクエリを使わない方法
-
7
DISTINCTROWについてです。
-
8
MySQLのdatetime型に0月0日を格納
-
9
SQLで、同じ値が何回連続す...
-
10
mysqlのif文かcase文で複数条件...
-
11
単一グループのグループ関数で...
-
12
テーブルの最後(最新)のレコー...
-
13
select文の実行結果に空白行を...
-
14
SQLローダーCSV取込で、囲み文...
-
15
テーブルのフィールドの一番長...
-
16
テーブルレーコードをソートし...
-
17
引数によってwhere句を切り替え...
-
18
where句中のtrim関数について
-
19
割合(パーセント)を求めるには?
-
20
Oracleで「文字が無効です」の...
おすすめ情報
公式facebook
公式twitter