在 T-SQL 中按客户识别日期范围重叠

问题描述 投票:0回答:1

我试图弄清楚是否有一种方法可以对重叠进行编码,而不是在 T-SQL 中构建 4 个不同的查询。

我们有一个名为

T_DATA
的表,它有
customer_id
cust_identifier
start_dt
end_dt
等列。

这是我们的数据示例,我们需要返回客户 1 和 2。

enter image description here

我们正在寻找属于这些场景的所有行。

enter image description here

除了构建嵌套查询和 4 个不同的连接之外,还有其他一些简化的方法来构建任何类型的重叠。

sql sql-server t-sql nested overlap
1个回答
0
投票

对于您的示例,您可以使用此查询来查找重叠范围:

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
© www.soinside.com 2019 - 2024. All rights reserved.