典型的なレポートスタイルのSQLを実行する際にいくつかの問題があり、経験豊富な人が助けてくれることを期待しています。
私は次のテーブルを持っています
製品
- 製品番号
- 商品名
- 製品カテゴリ
product_defects
- 製品番号
- 欠陥日付
- high_priority
- med_priority
- low_priority
カレンダー
- 日にち
そして、私が望んでいるのは、たとえば、特定の日のproduct_defectにデータが存在しない場合でも、各製品カテゴリに関連する高/中/低の欠陥の数を概説するレポートを生成できるようにすることです。 0として返される必要があります。例:
product_category | 日付| 高| ミディアム| 低い
1 2012-10-01 1 5 6
2 2012-10-01 2 4 3
3 2012-10-01 1 5 6
1 2012-10-02 0 0 0
2 2012-10-02 2 4 3
3 2012-10-02 1 5 6
…</p>
私がこれまでに行ったことは次のとおりです。
- カレンダーと呼ばれるルックアップテーブルを作成します。このテーブルには、数年前/前に戻る一連の日が含まれます。
- lookup / product_defectsテーブルに直接参加して一連の日付を取得し、欠落している日を0としてマークできるようにしました。
- COALESCEとSUMを使用して合計を計算し、欠落しているデータを0に変更しました
- 正確なレポート範囲を取得するために、defect_dateでMIN/MAXを使用しました
誰かが助けてくれることを願って、私はここ数日これに頭を悩ませてきました。
ありがとうございました