###質問内容
ユーザーマスタTABLE2 に存在する全員の集計表(下記のRESULT_TABLE)を出力したいです。
実績データテーブルTABLE1 には、ユーザーマスタ全員のデータが毎回登録されるわけではありません。
(本質問にて提示のデータですと、ユーザーマスタには ID=C がありますが、実績データテーブルには登録がありません。そのような実績のない ID は O と出力したいのです)
どのように書けばよいかわかりませんので
ご教示お願いいたします。
###期待する出力結果
(RESULT_TABLE):出力したいテーブル
MONTH | ID | DATA |
---|---|---|
1 | A | 202 |
1 | B | 204 |
1 | C | 0 |
2 | A | 210 |
2 | B | 212 |
2 | C | 0 |
###テーブル
(TABLE1):実績データが登録される。日を経るごとにデータは追加される。
MONTH | DAY | ID | DATA |
---|---|---|---|
1 | 1 | A | 100 |
1 | 1 | B | 101 |
1 | 2 | A | 102 |
1 | 2 | B | 103 |
2 | 1 | A | 104 |
2 | 1 | B | 105 |
2 | 2 | A | 106 |
2 | 2 | B | 107 |
(TABLE2):マスタ
ID | NAME |
---|---|
A | 001 |
B | 002 |
C | 003 |
###前提条件
MySQLを用いています。
TABLE1, TABLE2 は下記でCREATEしています。
SQL
1CREATE TABLE `TABLE1` ( 2 `MONTH` int(2) NOT NULL, 3 `DAY` int(2) NOT NULL, 4 `ID` char(4) NOT NULL, 5 `DATA` int(4) DEFAULT NULL, 6 PRIMARY KEY (`MONTH`,`DAY`,`ID`) 7) ; 8INSERT INTO `TABLE1` VALUES 9(1,1,'A',100), 10(1,1,'B',101), 11(1,2,'A',102), 12(1,2,'B',103), 13(2,1,'A',104), 14(2,1,'B',105), 15(2,2,'A',106), 16(2,2,'B',107);
SQL
1CREATE TABLE `TABLE2` ( 2 `ID` char(4) NOT NULL, 3 `NAME` char(4) DEFAULT NULL, 4 PRIMARY KEY (`ID`) 5) ; 6INSERT INTO `TABLE2` VALUES 7('A','001'), 8('B','002'), 9('C','003');
###試したこと
TABLE2と、TABLE1を月別集計したものをLEFT OUTER JOINしますが、MONTH列があるため、下記のようにID=Cは1レコードのみとなってしまいます。
MONTH | ID | DATA |
---|---|---|
NULL | C | NULL |
... | ... | ... |
回答2件
あなたの回答
tips
プレビュー