簡體   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