gpt4 book ai didi

sql - 从同一个表中检测重叠的日期范围

转载 作者:行者123 更新时间:2023-12-03 07:50:13 25 4
gpt4 key购买 nike

我有一个包含以下数据的表

PKey  Start       End         Type
==== ===== === ====
01 01/01/2010 14/01/2010 S
02 15/01/2010 31/01/2010 S
03 05/01/2010 06/01/2010 A

并希望得到以下结果
PKey  Start       End         Type
==== ===== === ====
01 01/01/2010 14/01/2010 S
03 05/01/2010 06/01/2010 A

关于从哪里开始的任何想法?我所做的很多阅读都表明我需要为每一天创建条目并在匹配的日子加入,这是唯一的方法吗?

最佳答案

如果您已经有应该工作的每一天的条目,但如果您没有,则开销很大,并且如果经常使用该查询,则是否会影响性能。

如果数据采用这种格式,您可以使用简单的日期算法检测重叠,因为重叠只是在给定间隔之后开始的一个间隔,但在给定完成之前,类似于

select dr1.* from date_ranges dr1
inner join date_ranges dr2
on dr2.start > dr1.start -- start after dr1 is started
and dr2.start < dr1.end -- start before dr1 is finished

如果您需要对完全在另一个间隔内的间隔进行特殊处理,或者您需要合并间隔,即
PKey  Start       End         Type
==== ===== === ====
01 01/01/2010 20/01/2010 S
02 15/01/2010 31/01/2010 S

屈服
Start       End         Type
===== === ====
01/01/2010 31/01/2010 S

您将需要更复杂的计算。

根据我对此类问题的经验,一旦您掌握了如何手动进行计算,就很容易将其转换为 SQL :)

关于sql - 从同一个表中检测重叠的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com