我在执行典型的报表样式 SQL 时遇到了一些问题,希望有更多经验的人能够提供帮助。
我有以下表格
产品
- product_id
- 产品名称
- 产品分类
产品缺陷
- product_id
- 缺陷日期
- 高优先级
- med_priority
- 低优先级
日历
- 日期
我想要的是能够生成一份报告,概述每天与每个产品类别相关的高/中/低缺陷的数量,例如——即使特定日期的 product_defect 中可能不存在数据,在这种情况下它应返回为 0。示例:
产品类别 | 日期 | 高 | 中 | 低的
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>
到目前为止我所做的是:
- 创建一个名为 calendar 的查找表,其中包含一系列日期,可以向后/向前几年
- 右加入查找/产品缺陷表以获取一系列日期,因此可以将缺失的天数标记为 0
- 使用 COALESCE 和 SUM 计算总计并将任何缺失的数据更改为 0
- 在 defect_date 上使用 MIN / MAX 来获得准确的报告范围
这几天我一直在努力解决这个问题,希望有人能提供帮助。
谢谢