我们得到以下格式的数据,我可以使用正则表达式查询进行转换。数据是用管道连接的任务的开始和结束数据。
数据:
|2020/04/26|2020/05/02|2020/05/03|2020/05/10
查询:
select REGEXP_SUBSTR (:p, '[^|]+', 1, level) as periods from dual
connect by level <= length (regexp_replace(:p, '[^|]+'))
结果:
2020/04/26
2020/05/02
2020/05/03
2020/05/10
我们需要把开始日期和结束日期分开。开始日期和结束日期组合的数量是动态的。但是开始日期会有结束日期,我们不会得到空值。
预期结果
START DATE END DATE
2020/04/26 2020/05/02
2020/05/03 2020/05/10
提前谢谢。
2条答案
按热度按时间3j86kqsm1#
你可以做算术和条件聚合:
db小提琴演示:
30byixjq2#
如果您有一个或多个输入行,则该解决方案将起作用(而如果您向分层查询输入了多行数据,则分层查询将生成指数级增加的重复行数)。
将日期对转换为xml,然后使用
XMLTABLE
要转换:因此,对于您的测试数据:
这将输出:
db<>在这里摆弄
或者,如果只有一个输入,则可以成对拆分数据:
输出:
db<>在这里摆弄
或使用:
db<>在这里摆弄