Я пытаюсь изучить соответствие шаблонов, которое было представлено с Oracle 12c. Однако получение столбца ORA-00918: неоднозначно определяется с нижеследующим кодом. Не уверен, где я пропустилПолучение ошибки ORA-00918 при использовании match_recognize
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))
)
Есть еще несколько проблем с этим кодом (помимо того, что Алекс указал уже). В MEASURES вы включаете только A.CUSTOMER_ID и т. Д., Но вы возвращаете ALL ROWS PER MATCH. Если вы хотите вернуть соответствующие значения для каждой строки, не измеряйте A.CUSTOMER_ID, измерьте CUSTOMER_ID. И затем используйте псевдонимы столбцов из MEASURES в SELECT. (Вы использовали исходные имена столбцов из базовой таблицы, что тоже хорошо, потому что в MEASURES вы не определяли никаких новых выражений, вы просто переименовали существующие столбцы). Если вы просто хотите вернуть существующие столбцы, вам вообще не нужно включать МЕРЫ! – mathguy