【发布时间】:2014-05-29 11:22:07
【问题描述】:
我的数据库中有下表:
Month|Year | Value
1 |2013 | 100
4 |2013 | 101
8 |2013 | 102
2 |2014 | 103
4 |2014 | 104
如何从数据中填写“缺失”行,这样如果我从 2013 年 3 月到 2014 年 3 月查询,我会得到:
Month|Year | Value
3 |2013 | 100
4 |2013 | 101
5 |2013 | 101
6 |2013 | 101
7 |2013 | 101
8 |2013 | 102
9 |2013 | 102
10 |2013 | 102
11 |2013 | 102
12 |2013 | 102
1 |2014 | 102
2 |2014 | 103
3 |2014 | 103
如您所见,我想重复前面的Value 来查找缺失的行。
【问题讨论】:
-
您这样做的原因是什么?到目前为止您做了什么尝试?如果你给你的问题更多的背景,并展示你的努力,你会得到一个更好的答案。
-
@Tanner 目的是比较一个月没有数据的数据,因为在我们的表中是这样减少表中数据的。
-
最简单的方法是创建一个查找表,其中包含要加入的所有月份和年份。如果该日期组合不存在,值将返回 null,此时您将计算要插入的值。
-
使用日历表,其中包含感兴趣期间每年每个月的每一天。
标签: sql-server sql-server-2012 gaps-and-islands