我想是的。我可能没有正确解释重叠。只要我使用您的SQL提供输入,我就不会得到任何记录的重叠标志。我应该在两条记录上有重叠。@Anon似乎在工作。我注意到最后一个逻辑语句是t1.Column1Id t1.Column1Id(typo),应该是t1.Colum
我想是的。我可能没有正确解释重叠。只要我使用您的SQL提供输入,我就不会得到任何记录的重叠标志。我应该在两条记录上有重叠。@Anon似乎在工作。我注意到最后一个逻辑语句是t1.Column1Id t1.Column1Id(typo),应该是t1.Colum,sql,sql-server,Sql,Sql Server,我想是的。我可能没有正确解释重叠。只要我使用您的SQL提供输入,我就不会得到任何记录的重叠标志。我应该在两条记录上有重叠。@Anon似乎在工作。我注意到最后一个逻辑语句是t1.Column1Id t1.Column1Id(typo),应该是t1.Column1Id t2.Column1Id我看不出这个查询如何不会产生OP所指出的示例结果。你能解释一下吗?@Anon。很好的逻辑,但不能回答OP的问题。他刚刚通过编辑澄清了这个问题。你应该看看这个。@GordonLinoff击中移动目标更难。@Ano
我想是的。我可能没有正确解释重叠。只要我使用您的SQL提供输入,我就不会得到任何记录的重叠标志。我应该在两条记录上有重叠。@Anon似乎在工作。我注意到最后一个逻辑语句是t1.Column1Id t1.Column1Id(typo),应该是t1.Column1Id t2.Column1Id我看不出这个查询如何不会产生OP所指出的示例结果。你能解释一下吗?@Anon。很好的逻辑,但不能回答OP的问题。他刚刚通过编辑澄清了这个问题。你应该看看这个。@GordonLinoff击中移动目标更难。@Anon我没有得到我期望的结果。我可能没有正确解释重叠。只要我使用您的SQL提供输入,我就不会得到任何记录的重叠标志。我应该在两条记录上有重叠。@Anon似乎在工作。我注意到最后一个逻辑语句是t1.Column1Id t1.Column1Id(typo),应该是t1.Column1Id t2.Column1Id
+-----------+-----------+------------+------------+
| Column1Id | Column2Id | StartDate | EndDate |
+-----------+-----------+------------+------------+
| 120 | 12 | 2014-07-13 | 2014-07-26 |
| 120 | 41 | 2014-07-13 | 2014-07-26 |
| 120 | 55 | 2014-07-13 | 2014-07-26 |
| 120 | 56 | 2014-07-13 | 2014-07-26 |
| 3293 | 41 | 2014-07-20 | 2014-07-26 |
+-----------+-----------+------------+------------+
+-----------+-----------+------------+------------+----------------+
| Column1Id | Column2Id | StartDate | EndDate | HasDateOverlap |
+-----------+-----------+------------+------------+----------------+
| 120 | 12 | 2014-07-13 | 2014-07-26 | 0 |
| 120 | 41 | 2014-07-13 | 2014-07-26 | 1 |
| 120 | 55 | 2014-07-13 | 2014-07-26 | 0 |
| 120 | 56 | 2014-07-13 | 2014-07-26 | 0 |
| 3293 | 41 | 2014-07-20 | 2014-07-26 | 1 |
+-----------+-----------+------------+------------+----------------+
SELECT ColumnId1, ColumnId2, StartDate, EndDate
FROM Table1
+-----------+-----------+------------+------------+
| Column1Id | Column2Id | StartDate | EndDate |
+-----------+-----------+------------+------------+
| 120 | 41 | 2014-07-13 | 2014-07-26 |
| 3293 | 41 | 2014-07-20 | 2014-07-26 |
+-----------+-----------+------------+------------+
2014-07-13 to 2014-07-26
2014-07-20 to 2014-07-26
SELECT *,
CASE
WHEN EXISTS (
SELECT 1
FROM Table1 t2
WHERE t1.StartDate < t2.EndDate
AND t2.StartDate < t1.EndDate
AND t1.Column2Id = t2.Column2Id --to accommodate edited question
AND t1.Column1Id <> t2.Column1Id --to accommodate edited question
) THEN 1
ELSE 0
END AS HasDateOverlap
FROM Table1 t1