Oracle - Match_recognize /\ 形状检测

Oracle - Match_recognize /\ shape detect

样本数据来自 https://livesql.oracle.com/apex/livesql/file/tutorial_EG95N4HMCYSL1A0Y6J80UHNHB.html

基于此数据和可视化,有 2 个 /\ 形状:

第 1 - 从 1.05 到 06.04

第 2 - 从 06.04 到 12.04

并且此查询显示 2nd 为 07.04 到 12.04:

我是 Oracle 的新手 Match_recognize,我想知道 - 为什么会这样?

默认情况下,MATCH_RECOGNIZE 不允许同一行出现在不同的匹配项中。如果你想让一个匹配中的最后一个值成为下一个匹配中的第一个值,你需要修改 AFTER MATCH SKIP 子句。

默认设置为AFTER MATCH SKIP PAST LAST ROW。将代码 AFTER MATCH SKIP TO LAST DOWN 添加到您的查询中将会得到您想要的结果。

this db<>fiddle for a runnable example.