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