【发布时间】:2015-11-11 14:51:39
【问题描述】:
我一直在尝试各种事情,但我无法弄清楚。我在搜索中没有发现相同的问题。
我有一个包含多个日期范围的表格,我需要获取连续且不重叠的表格。例如:
表:
Company | StartDate | EndDate
---------------------------------
A | 2014-07-01 | 2015-06-30
A | 2013-07-01 | 2014-06-30
A | 2013-01-01 | 2013-12-31
A | 2012-07-01 | 2013-06-30
A | 2012-01-01 | 2012-12-31
期望的结果:
Company | StartDate | EndDate
---------------------------------
A | 2014-07-01 | 2015-06-30
A | 2013-07-01 | 2014-06-30
A | 2012-07-01 | 2013-06-30
我们这里基本上有会计年度和日历年度。我希望我的结果集基于最近的一组日期。由于最近的是 7/1 - 6/30,我不希望结果中有任何 1/1 - 12/31 范围。我不能硬编码像WHERE MONTH(EndDate)=6 这样的东西,因为在现实生活中,财政年度的开始和结束可能会有很大差异。我不能这样做EndDate + 1 = StartDate,因为旧日历年会使新日历年适合该集合。
我对该数据库的访问权限有限,因此无法编写 SP 或临时表。这是针对 SQL Server 2008 的。
【问题讨论】:
-
包含您的原始表并包含您当前的查询。
-
我不明白你为什么不能使用 enddate+1 = start date。你能再解释一下吗?
-
2012-12-31 + 1 = 2013-01-01,因此不会排除结束日期为 2013-12-31 的行。
-
连续日期的月/日是否总是相同的?
-
这张表有ID吗?
标签: sql sql-server tsql