【发布时间】:2015-10-19 19:21:07
【问题描述】:
我需要的是在 SQL 中给定这样的表来计算日历年内缺失的时间段:
DatesTable
|ID|DateStart |DateEnd |
1 NULL NULL
2 2015-1-1 2015-12-31
3 2015-3-1 2015-12-31
4 2015-1-1 2015-9-30
5 2015-1-1 2015-3-31
5 2015-6-1 2015-12-31
6 2015-3-1 2015-6-30
6 2015-7-1 2015-10-31
预期回报为:
1 2015-1-1 2015-12-31
3 2015-1-1 2015-2-28
4 2015-10-1 2015-12-31
5 2015-4-1 2015-5-31
6 2015-1-1 2015-2-28
6 2015-11-1 2015-12-31
本质上是工作块。我需要展示的是日历年中没有工作的部分。所以对于 ID = 3,他从 3 月 1 日一直工作到今年剩下的时间。但他从 1 月 1 日到 2 月 28 日都没有工作。这就是我要找的。p>
【问题讨论】:
-
能否解释一下记录 ID = 3 等结果的逻辑?
-
这是 SQL Server 2008 的一个痛点。你能升级到 SQL Server 2012 吗?
-
考虑完成。如果有帮助,我可以在 2012 年运行它。
-
我认为您将不得不使用带有游标或表变量的存储过程,尽管您可以使用递归函数来做一些事情。
标签: sql date sql-server-2012