我在表 1 上有一组随机日期的里程碑,在表 2 上有一组随机日期的项目(见下文)。
表格1
里程碑 | 里程碑日期 |
---|---|
一个 | 2021 年 1 月 1 日 |
乙 | 2021 年 3 月 15 日 |
C | 2021 年 5 月 27 日 |
D | 2021 年 9 月 9 日 |
表2(该表有数百个条目,不同日期跨越全年)
物品编号 | 项目创建日期 |
---|---|
1 | 2021 年 1 月 17 日 |
2 | 2021 年 1 月 18 日 |
3 | 2021 年 1 月 25 日 |
4 | 2021 年 2 月 12 日 |
... | ... |
我需要计算表 2 中日期介于每个里程碑之间的条目数(见下文)。
里程碑 | 项目 |
---|---|
一个 | 24 |
乙 | 31 |
C | 44 |
D | 37 |
我目前的查询是:
SELECT
tbl2.Milestone
,COUNT(DISTINCT tbl1.ItemID) 'Items'
FROM
tbl1
FULL JOIN tbl2
ON tbl1.CreateDate = tbl2.MilestoneDate
GROUP BY
tbl2.Milestone,tbl2.MilestoneDate
ORDER BY
tbl2.MilestoneDate
里程碑 | 项目计数 |
---|---|
无效的 | 136 |
我尝试了许多配置来解决这个问题,包括仅使用日期而不是里程碑名称、删除 ORDER BY 以及完全不同的编码方法。解决此问题的最佳方法是什么?注意:我不能使用任何一个表中的键,因为它们会导致跟踪完全不同的东西。我不是这个数据库的 dba,所以我不能自己调整表。
目前,我必须通过指定每个日期范围并运行查询,然后是另一个日期范围并运行(有几十个里程碑不断添加新的里程碑)来手动提取每个值。