さらに明確にするために、元の投稿を言い換えます。
現在、以下の表があります。
Product_Ref
- 製品番号
- 商品名
製品
- 製品番号
- so_date (日付)
- 総売上高
カレンダー
- dt (日付フィールド、各行は過去/次の 10 年間の 1 日を表します)
過去 6 か月間 (SYSDATE に基づく) に販売された製品の数を日単位で示すレポートを作成しようとしています。レポートは、可能なすべての product_id に対して、過去 6 か月間のすべての日の組み合わせである必要があります。形式:
商品ID | 日付 | 総売上高
製品テーブルに 0 エントリがあったと仮定した場合 (つまり、売上がなかった場合)、完全なレポート出力が期待されますが、代わりに 6 か月分のゼロ化されたデータが表示されます。
1 | 2012-01-01 | 0
2 | 2012-01-01 | 0
3 | 2012-01-01 | 0
1 | 2012-01-02 | 0
2 | 2012-01-02 | 0
3 | 2012-01-02 | 0
…
これは、product_reference テーブルに 3 つの製品があることを前提としています。元のクエリ (以下に記載) は 10 のスターターでしたが、ここからどこに行けばよいかわかりません。
SELECT products.product_id, calendar.dt, products.total_sales
FROM products RIGHT JOIN calendar ON (products.so_date = calendar.dt)
WHERE calendar.dt < SYSDATE AND calendar.dt >= ADD_MONTHS(SYSDATE, -7)+1
ORDER BY calendar.dt ASC, products.product_id DESC;