【发布时间】:2011-03-18 16:41:25
【问题描述】:
Microsoft SQL Server 中存在一个表,其中包含记录 ID、开始日期、结束日期和数量。
这个想法是,对于每条记录,数量/范围内的总天数 = 每日数量。
鉴于存在包含所有可能日期的表,我如何在 SQL Server 中生成类似于以下示例的结果集?
前:
RecordID | Start Date | End Date | Quantity
1 | 1/1/2010 | 1/5/2010 | 30000
2 | 1/3/2010 | 1/9/2010 | 20000
3 | 1/1/2010 | 1/7/2010 | 10000
Results as
1 | 1/1/2010 | QTY (I can do the math easy, just need the dates view)
1 | 1/2/2010 |
1 | 1/3/2010 |
1 | 1/4/2010 |
1 | 1/3/2010 |
2 | 1/4/2010 |
2 | 1/5/2010 |
2 | 1/6/2010 |
2 | 1/7/2010 |
2 | 1/8/2010 |
2 | 1/9/2010 |
3 | 1/1/2010 |
3 | 1/2/2010 |
3 | 1/3/2010 |
3 | 1/4/2010 |
3 | 1/5/2010 |
3 | 1/6/2010 |
3 | 1/7/2010 |
按我可以得到的日期分组,然后得到当天的数量总和,但由于用户提供的过滤器可能会排除其中一些记录,因此最终结果集无法汇总。
编辑
为了澄清,这只是一个示例。过滤器无关紧要,因为我可以加入到一边以在结果中提取与记录 ID 相关的详细信息。
真实数据包含 N 条记录,每周增加,日期永远不会相同。可能有 2000 条记录具有不同的开始日期和结束日期......这就是我想要为其生成视图的内容。我可以直接加入数据来完成我需要的其余部分
我还应该提到这是针对过去、现在和未来的数据。我很想摆脱一个临时的日期表。我正在使用递归查询来获取 50 年内存在的所有日期,但这超出了视图的 MAXRECURSION 限制,我无法使用。
【问题讨论】:
-
我不确定我是否了解有关用户提供的过滤器的信息。能详细点吗?
-
过滤器真的无关紧要。我将把这个列表加入到包含数量等信息的主列表中,并且可以使用这些事实来得出全面的值
标签: sql-server date-range