ORACLE SQL 日期范围交集
我有一个表 T1,它包含一个 NAME 值(不唯一)和一个日期范围(D1 和 D2 是日期) 当 NAME 相同时,我们对日期范围进行并集(例如 B)。
但结果(X),我们需要对所有日期范围进行交集
编辑: 表 T1
NAME | D1 | D2
A | 20100101 | 20101211
B | 20100120 | 20100415
B | 20100510 | 20101230
C | 20100313 | 20100610
结果:
X | 20100313 | 20100415
X | 20100510 | 20100610
从视觉上看,这将给出以下结果:
NAME : date range
A : [-----------------------]-----
B : --[----]----------------------
B : ----------[---------------]---
C : -----[--------]---------------
结果:
X : -----[-]----------------------
X : ----------[---]---------------
知道如何使用 SQL/PL SQL 获得该结果吗?
I have a table T1, it contains a NAME value (not unique), and a date range (D1 and D2 which are dates)
When NAME are the same, we make a union of the date ranges (e.g. B).
But as a result (X), we need to make intersection of all the date ranges
Edit:
Table T1
NAME | D1 | D2
A | 20100101 | 20101211
B | 20100120 | 20100415
B | 20100510 | 20101230
C | 20100313 | 20100610
Result :
X | 20100313 | 20100415
X | 20100510 | 20100610
Visually, this will give the following :
NAME : date range
A : [-----------------------]-----
B : --[----]----------------------
B : ----------[---------------]---
C : -----[--------]---------------
Result :
X : -----[-]----------------------
X : ----------[---]---------------
Any idea how to get that using SQL / PL SQL ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个快速解决方案(可能不是最有效的):
我构建所有可能的连续日期范围并将此“日历”与示例数据连接起来。这将列出具有 3 个值的所有范围。如果添加行,您可能需要合并结果:
here is a quick solution (may not be the most efficient):
I build all the possible successive date ranges and join this "calendar" with the sample data. This will list all ranges that have 3 values. You may need to merge the result if you add rows: