Создание быстрого обновляемого 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