【发布时间】:2018-12-17 20:35:34
【问题描述】:
下午好,
我有一个有趣的问题,我想提出堆栈溢出社区。我们的数据仓库 (SQL Server) 中有一个具有唯一标识符的数据集和几个月的唯一标识符。例如,如果有人在 2018 年 12 月查看它并看到下面的这些行:
Row ID BeginDate EndDate Unique ID Amount
178484 2018-01-01 2018-01-31 GroupID1 387.22
176555 2018-03-01 2018-03-31 GroupID1 751.07
170120 2018-04-01 2018-04-30 GroupID1 567.48
172037 2018-09-01 2018-09-30 GroupID1 587.51
179024 2018-10-01 2018-10-31 GroupID1 63.42
182061 2018-11-01 2018-11-30 GroupID1 728.04
我们希望以某种方式识别缺失的行(月)。例如对于上面,我们将插入以下行
- 2 月、5 月、6 月、7 月、8 月和 12 月 输入的最后一个月可能是运行查询的日期。
重要的是要注意,这显然不是我们数据库中唯一的行分组。此外,我们会避免使用游标。我们已经尝试使用游标和包含所有有效值的临时表来执行此操作。但希望有更快的方法来解决这个问题。
对此的任何帮助将不胜感激。
一切顺利, 乔治·埃瓦兹
【问题讨论】:
-
既然你要找缺失的月份,你就不能用join吗?
-
只是从 1 到 12 的值作为一个表,然后在 Month(YourDateColumn) 上将它们与您的表连接起来,其中您的日期列为 NULL
-
我会试试这个。这可能是历史或 stackoverflow 中最简单的问题
标签: sql-server sql-insert data-warehouse window-functions sql-data-warehouse