使用它下面的行加入SQL Server

vsg*_*vsg 0 sql database sql-server join sql-server-2012

我试图找到一种方法来连接表格的行,其下面有行.不知道这是否是一件事,但我想我会问.

Table A
Name StartDate EndDate  
A    01/01/15  01/12/2015
B    31/01/15  01/03/2015
C    01/04/15  01/08/2015
D    21/07/15  01/05/2015
Run Code Online (Sandbox Code Playgroud)

我希望得到日​​期重叠的人.从示例中,A与B,C和D重叠,然后我需要AB,AC和AD,但也想忽略BA,CA和DA.

So the output from Table A should be:
A B
A C
A D
B D
C D
Run Code Online (Sandbox Code Playgroud)

现在,我正在加入桌子,但无法摆脱重复,即我的结果中既有AB又有BA.任何帮助将非常感激.提前致谢.

Gor*_*off 5

只需在比较中添加一个额外条件:

select a.name, a2.name
from a a join
     a a2
     on a.startdate <= a2.enddate and
        a.enddate >= a2.startdate and
        a.name < a2.name;
Run Code Online (Sandbox Code Playgroud)

当第一个在第二个结束之前开始时,两个日期范围重叠,而第一个在第二个结束之后结束.

注意:根据结束日期是否包含在内,您可能需要严格的不等式进行比较.