下午好(这是在佛罗里达州)。
我在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行不应该在结果集中的原因。
谢谢!
答案 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