SQL Server - 使用两个日期抓取不同的值

时间:2015-07-01 18:10:41

标签: sql sql-server tsql

下午好(这是在佛罗里达州)。

我在SQL Server中有一个包含以下数据的表:

  id   StartDate     EndDate    
---- ------------ ------------ 
1   2015-06-30   2015-07-30  
2   2015-08-01   2015-08-31  
3   2015-08-01   2015-12-31  
4   2015-09-01   2015-09-30  
5   2015-10-01   2015-12-31  

我需要一个'distinct'选择语句,我会抓取除记录3以外的所有内容,因为它与另一个日期重叠。

最好的方法是什么?我已经尝试了联盟,但这不起作用。

任何帮助表示赞赏!

编辑:我的预期输出需要如下所示:

+============+============+
|     SD     |     ED     |
| 2015-06-30 | 2015-07-30 |
+------------+------------+
| 2015-08-01 | 2015-08-31 |
+------------+------------+
| 2015-09-01 | 2015-09-30 |
+------------+------------+
| 2015-10-01 | 2015-12-31 |
+------------+------------+

我希望排除日期范围内的行,这些日期范围的开始日期等于表格中的另一个开始日期,并且具有使该日期范围与其他日期范围重叠的结束日期。这就是第3行不应该在结果集中的原因。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您只想获得StartDate的每个唯一值的最短日期范围,那么您可以在StartDate上使用分组,并将EndDate设置为{{1} }}:

Min

答案 1 :(得分:1)

尝试此查询

    Select   a.Stard_Date as sd, min( a.End_date) as ed 
from tablename a group by a.Stard_Date