查询以获取帐户不与日期范围冲突

时间:2019-05-06 14:36:10

标签: sql

“帐户”表具有“帐户”,“开始日期”和“结束日期”字段。同一帐户将具有不同的开始日期和结束日期。 我需要获得属于同一日期范围的帐户。

+----------+-----------+------------+
| Account  | StartDate |  Enddate   |
+----------+-----------+------------+
| T001     | 1/1/2018  | 6/30/2018  |
| T001     | 7/1/2018  | 12/31/2018 |
| T002     | 1/1/2018  | 6/1/2018   |
| T002     | 7/1/2018  | 12/31/2018 |
| T002     | 4/1/2018  | 6/5/2018   |
+----------+-----------+------------+

预期

+----------+-----------+------------+
| Account  | StartDate |  Enddate   |
+----------+-----------+------------+
| T002     | 1/1/2018  | 6/1/2018   |
| T002     | 7/1/2018  | 12/31/2018 |
| T002     | 4/1/2018  | 6/5/2018   |
+----------+-----------+------------+

T002帐户日期范围冲突。

1 个答案:

答案 0 :(得分:0)

SELECT t1.*
FROM account_table t1 
INNER JOIN account_table t2 
ON t1.Account=t2.Account 
AND t1.StartDate<t2.EndDate 
AND t1.EndDate>t2.StartDate 
AND t1.StartDate<>t2.StartDate;

这将获得所有日期范围重叠的帐户。