[英]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.