我试图弄清楚是否有一种方法可以对重叠进行编码,而不是在 T-SQL 中构建 4 个不同的查询。
我们有一个名为
T_DATA
的表,它有 customer_id
、cust_identifier
、start_dt
、end_dt
等列。
这是我们的数据示例,我们需要返回客户 1 和 2。
我们正在寻找属于这些场景的所有行。
除了构建嵌套查询和 4 个不同的连接之外,还有其他一些简化的方法来构建任何类型的重叠。
对于您的示例,您可以使用此查询来查找重叠范围:
select distinct dr1.*
from #T_DATA dr1
inner join #T_DATA dr2
on dr2.Start_dt > dr1.Start_dt -- start after dr1 is started
and dr2.Start_Dt < dr1.End_Dt -- start before dr1 is finished