サーバーのダウンタイムの記録を持つテーブルがあります。
このテーブルの簡易バージョンを sqlfiddle で作成しました。ここを参照してくださいsqlfiddle
テーブルには次のような各レコードがあります
Reason Month Down_Time
A May 2
A May 5
B May 5
C July 15
A July 3
B June 6
A June 8
C June 2
一致するレコードがない場合、NULL を指定した月と理由のすべての組み合わせを取得するクエリを作成する必要があります
例: 理由 A、B により 5 月、6 月、7 月のシステムのダウンタイムを取得する必要がある場合またはD..私が期待しているのは..
Reason Month DOWNTIME
A May 7
A June 8
A July 3
B May 5
B June 6
B July NULL
D May NULL
D June NULL
D July NULL
特定の月のレコードに D がないため、NULL にする必要があります
これは私のクエリです:
SELECT Reasons.reason, Months.Month,sum( a.Down_time ) AS downtime
FROM tabledown a
RIGHT JOIN (
SELECT 'A' AS reason
UNION ALL SELECT 'B' AS reason
UNION ALL SELECT 'D' AS reason
) Reasons
ON a.reason = Reasons.reason
RIGHT JOIN (
SELECT 'May' AS month
UNION ALL SELECT 'June' AS month
UNION ALL SELECT 'July' AS month
) Months
ON a.Month = Months.month
GROUP BY Reasons.reason,Months.month
ORDER BY Reasons.reason
期待される出力が得られないのはなぜですか:(