我有问题。我想写oracle查询数据库,基于图像中的数据
将创建结果:
START_DATE |END_DATE |COLOR
-------------------|-------------------|------
2017-05-25 15:39:39|2017-05-25 15:41:06|GREEN
2017-05-25 15:41:06|2017-05-25 15:53:27|ORANGE
2017-05-25 15:53:27|2017-05-25 15:57:16|GREEN
2017-05-25 15:57:16|2017-05-25 15:59:24|YELLOW
等...
答案 0 :(得分:3)
您正在尝试查找相邻值。一种方法使用行号的差异:
select min(start_date) as start_date, max(start_date) as end_date, color
from (select t.*,
row_number() over (order by start_date) as seqnum,
row_number() over (partition by color order by start_date) as seqnum_c
from t
group by (seqnum - seqnum_c), color;
解释行数差异的原因有点难度。我鼓励你运行子查询并盯着数字。您应该能够看到为什么相邻颜色值的差异是恒定的。