Создание быстрого обновляемого MView ORA-12015: невозможно создать материализованное представление с быстрым обновлением из сложного запроса.

Я хочу создать m-view, который хранит совокупность денежных средств из истории транзакций.

Запрос следующий.

      CREATE MATERIALIZED VIEW MV_CASH_STATS

BUILD IMMEDIATE REFRESH FAST ON DEMAND 
AS

( -- Total aggregates 
    SELECT
        'total' AS CODE
        , COUNT(T.CASH_IN) AS DEPOSITS
        , COUNT(T.CASH_OUT) AS WITHDRAWS
        , SUM(T.CASH_IN) AS DEPOSIT
        , SUM(T.CASH_OUT) AS WITHDRAW
    FROM
        TB_CASH_LOG T
)
UNION ALL
( -- Aggregates by account grades
    SELECT
        'grade-' || T1.GRADE AS CODE
        , COUNT(T.CASH_IN) AS DEPOSITS
        , COUNT(T.CASH_OUT) AS WITHDRAWS
        , SUM(T.CASH_IN) AS DEPOSIT
        , SUM(T.CASH_OUT) AS WITHDRAW
    FROM
        TB_CASH_LOG T
        INNER JOIN TB_ACCOUNT T1 ON
            T.ACCOUNT_ID = T1.ID
    GROUP BY T1.GRADE
)

Когда я выполняю это, возникает следующая ошибка.

      > ORA-12015: cannot create a fast refresh materialized view from a complex query

(Я создал таблицы журналов m-view для обоих TB_CASH_LOGа также TB_ACCOUNT)

The Total aggregatesчасть в порядке, но более поздняя часть - Aggregates by account grades- делает ошибку.

Я прочитал документацию по базовым материализованным представлениям Oracle и подумал, что INNER JOINили же GROUP BYявляется точкой ошибки.

Если это так, быстро обновите m-view с помощью inner joinа также group byневозможно?
Что не так с моей декларацией m-view sql?

PS я работаю над оракулом 18c

0 ответов

Другие вопросы по тегам