【问题标题】:Oracle - Match_recognize /\ shape detectOracle - Match_recognize // 形状检测
【发布时间】:2021-09-05 03:40:53
【问题描述】:

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

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

1st - 从 1.05 到 06.04

2nd - 从 06.04 到 12.04

这个查询显示 2nd 为 07.04 到 12.04:

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

【问题讨论】:

  • 我认为lead()lag()在这种情况下要简单得多。
  • 我想如果我想使用领先和滞后 - 我会......但这个问题是关于 match_recognize,而不是滞后/领先

标签: sql oracle pattern-matching oracle12c


【解决方案1】:

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

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

this db<>fiddle for a runnable example.

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2016-09-25
    • 2013-05-16
    相关资源
    最近更新 更多