【发布时间】:2015-06-05 18:35:09
【问题描述】:
我有一个包含多个实体的数据集,每个实体都有一系列日期的数据(每月报告)。每个实体都有不同的开始和结束日期。每个实体可能有几个月没有报告数据。
我需要将此数据复制到另一个表中,为实体在该实体的特定日期范围内没有报告数据的每个月填写默认值。
我的数据集非常大(数万个实体),每个实体每个月都有几十年的数据。
我已尝试使用覆盖时间范围的每个实体的记录来初始化目标表,该时间范围应包括所有实体可能的最小和最大日期。然后在其日期范围的开始和结束时为每个实体修剪未填充的记录。这会生成数百万个最终被删除的虚拟记录。这个过程需要几个小时。
我需要更快的东西。
【问题讨论】:
-
提供样本数据和预期结果以加快响应速度
-
右连接到包含您希望在结果中显示的所有日期的表。这是一个非常常见的问题的非常常见的解决方案。
-
您能否查询每个实体的 min(start) 和 max(end),并且只为该实体输入那些月份的默认值,而不是输入所有的 min/max 的默认值实体?
-
对于 Beth - 我可以获得每个实体的最小和最大日期。我不确定如何构造一个查询来循环遍历所有实体和日期。这会起作用,但似乎仍然应该有一个查询可以即时填补空白。
标签: sql-server date