可以使用哪种 Oracle SQL 技术来连接这些行:
id | from | to
--------------
a | 20 | 25
a | 26 | 30
a | 32 | 40
b | 1 | 5
b | 7 | 10
b | 11 | 20
对于这样的结果:
a | 20 | 30
a | 32 | 40
b | 1 | 5
b | 7 | 20
?假设from
和to
是整数周期的开始和结束,并且有必要为 id
选择不间断周期。的
只是寻找正确的方向和示例,可以使用 group by
来完成此操作吗?或connect by
或者其他什么?
数据库是Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
最佳答案
也许类似的东西:
select
field_id,
min(field_from),
max(field_to)
from (
select
field_from,
field_to,
field_id,
sum(willSum) over(partition by field_id order by field_from) as GID
from (
select
field_from,
field_to,
field_id,
case when field_from
= Lag(field_to) over(partition by field_id order by field_from)
then 0 else 1 end as willSum + 1
from
rj_mytest
)
)
group by
field_id,
GID
order by
field_id,
min(field_from);
还有几个类似的例子:https://forums.oracle.com/thread/969005
关于sql - 通过根据两个(起始和终止)值计算非中断时间段进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19229823/