是否可以从一列中取出结果并将其转移到两列中。 以第一个和第二个结果作为开始和结束 和其他人都以同样的方式。 我使用了pivot,但没有得到任何实际结果。
当前结果
rn old_date_row
1 01-JUN-18
2 null
3 null
4 null
5 22-JUN-18
6 null
7 null
8 null
9 25-JUN-19
10 null
11 null
12 25-JUN-20
预期结果 新表
start_date end_date
01-JUN-18 22-JUN-18
25-JUN-19 25-JUN-20
您需要使用
row_number()
枚举不为空的行,然后使用 round(rid/2)
识别连续的行:
select old_date_row, rid, round(rid/2)
from (
select old_date_row, row_number() over (order by rn) rid
from mytable t
where old_date_row is not null
)
结果:
OLD_DATE_ROW RID ROUND(RID/2)
01-06-18 1 1
22-06-18 2 1
25-06-19 3 2
25-06-20 4 2
最终查询可以是:
select min(old_date_row) as start_date, max(old_date_row) as end_date
from (
select old_date_row, row_number() over (order by rn) rid
from mytable t
where old_date_row is not null
)
group by round(rid/2);
结果:
START_DATE END_DATE
01-06-18 22-06-18
25-06-19 25-06-20