
複数のテーブルから値を合計出力する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で質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Oracle SQL update方法 2 2022/06/22 14:07
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- その他(データベース) accessについて 2 2022/05/31 16:58
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
このQ&Aを見た人はこんなQ&Aも見ています
-
結合したテーブルをSUMしたい
MySQL
-
GROUP BYを行った後に結合したい。
Oracle
-
2つのテーブルを結合して合計(SQL文)
SQL Server
-
-
4
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
5
SQL文で、合計が0のレコードを表示させないようにしたい。
SQL Server
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
Oracleの排他制御について教えてください
その他(データベース)
-
8
単一グループのグループ関数ではありません。
Oracle
-
9
列のヘッダーを含めるのをデフォルトにする。
SQL Server
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
12
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
13
SQL 複数のテーブルから重複なしでデータを取得
Oracle
-
14
アクセス IIfとSum関数を同時に使いたい場合
Access(アクセス)
-
15
2つのテーブルで引き算 postgres
PostgreSQL
-
16
【DB】同じトランザクション内でupdateとselectをしたときの結果値
その他(データベース)
-
17
BULK INSERT時のNull許容について
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
SELECT文でこんなことはできる...
-
Mysqlについて、どの程度の処理...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
-
select文について
-
Oracleで「文字が無効です」の...
-
REGEXPで希望の動作をしてくれない
-
timestamp with time zone型の...
-
where句中のtrim関数について
-
レコードの登録順がおかしい
-
count関数の値をwhere句で使用...
-
実人数と延べ人数
-
SQLの作り方についてご教授下さ...
-
AccessのSQL文で1件のみヒット...
-
SELECT FOR UPDATE で該当レコ...
-
ファイルの漢数字の順番につい...
-
select文の実行結果に空白行を...
-
トランザクションログを出力せ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のテーブルから値を合計出...
-
<SQL>重複しているデータの場合...
-
MySQLで特定のグループの上位3...
-
mysqlでクロス集計を取りたいが...
-
最新の日付と2番目の日付のデー...
-
日付検索で0001-01-01 00:00:00...
-
直近1ヶ月に誕生日を迎える社員...
-
SQLで、同じ値が何回連続す...
-
PHPとMYSQLを使用したデータベ...
-
Mysqlで最新の日付を持つデータ...
-
DISTINCTROWについてです。
-
下記の問合せを行うクエリを、 ...
-
MySQLのdatetime型に0月0日を格納
-
SQL 重複しないJoinの仕方を教...
-
保存時間から10日後の判定
-
日付のフォーマット
-
SQL Serverでデータの表示順を...
-
NULLは表示順最下位
-
日付・・・insertとselect
-
サブクエリを使わない方法
おすすめ情報