SQL日期重叠

SQL日期重叠,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我有一个sql数据的下表。我想知道重叠的日期 ARN NO From Date To Date 1 106739 1/1/2015 3/31/2015 2 106739 1/1/2015 2/28/2015 3 106739 3/1/2015 3/31/2015 4 106739 5/1/2015 6/30/2015 5 106739 7/1/2015 9/30/2015 6 106739 9/1/2015 9

我有一个sql数据的下表。我想知道重叠的日期

ARN NO      From Date   To Date
1   106739  1/1/2015    3/31/2015
2   106739  1/1/2015    2/28/2015
3   106739  3/1/2015    3/31/2015
4   106739  5/1/2015    6/30/2015
5   106739  7/1/2015    9/30/2015
6   106739  9/1/2015    9/30/2015
7   106739  10/1/2015   12/31/2015
8   106739  10/1/2015   12/31/2015
在上表中,前三条记录重叠。我如何编写查询来找出答案?我需要下面的输出

   NO  ARN NO   From Date   To Date
   4    106739  5/1/2015    6/30/2015
谢谢

您可以使用:

如果第一个时间段在第二个时间段之前开始,第二个时间段在第二个时间段之后结束,则两个时间段重叠。

您可以使用exists:


如果第一个时间段在第二个时间段之前开始,第二个时间段在第二个时间段之后结束,则两个时间段重叠。

最后两个时间段如何?它们也是重叠的。它的重叠。我编辑了这个问题。请看最后两个怎么样?它们也是重叠的。它的重叠。我编辑了这个问题。请看,我想你最后一句话的结尾有些混乱。最后,如果我们插入预期的隐含主题,我就不能用第一个或第二个主题来代替它。你应该考虑每一行唯一的一个值。就我而言,这是付款清单ID,我没有在问题中列出。我想在你最后一句话的结尾有点混乱。最后,如果我们插入预期的隐含主题,我就不能用第一个或第二个主题来代替它。你应该考虑每一行唯一的一个值。对于我的情况,它是付款清单ID,我没有在问题中列出
select t.*
from t
where exists (select 1
              from t t2
              where t2.arnno = t.arrno and
                    t2.fromdate < t.todate and
                    t2.todate > t.fromdate
             );