繁体   English   中英

使用match_recognize时收到错误ORA-00918

[英]Getting error ORA-00918 when using match_recognize

我正在尝试学习Oracle 12c引入的模式匹配。 但是从下面的代码中模糊地定义了ORA-00918:列。 不知道我在哪里错过

    SELECT CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP FROM DEMO_ORDERS MATCH_RECOGNIZE(
  PARTITION BY CUSTOMER_ID
  ORDER BY CUSTOMER_ID,ORDER_TIMESTAMP

  MEASURES
   A.CUSTOMER_ID AS CUSTOMER,
    A.ORDER_TOTAL AS TOTAL_AMT,
    A.ORDER_TIMESTAMP AS WHEN_HPA
   ALL ROWS PER MATCH
  PATTERN( A B* )
  DEFINE
    B AS (B.ORDER_TOTAL < PREV(B.ORDER_TOTAL))


    )

问题是您的order by子句; 似乎同时看到了原始表列的customer_id和匹配分区值。

但是,您正在按customer_id分区,因此按顺序进行排序毫无意义。 该排序适用于分区内(如分析功能中一样)。 因此,您可以删除它:

SELECT CUSTOMER_ID,ORDER_TOTAL,ORDER_TIMESTAMP FROM DEMO_ORDERS MATCH_RECOGNIZE(
  PARTITION BY CUSTOMER_ID
  ORDER BY ORDER_TIMESTAMP
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM