Многотабличное значение вставки из другой таблицы
У меня есть таблицы - FAKE_CUST, PRE_CUST, NORMAL_CUST. На основании ограничения, присутствующего в таблице FAKE_CUST, значение должно быть доведено до PRE_CUST или NORMAL_CUST.
Я использую следующий код:
INSERT ALL
INTO PRE_CUST(CUST_ID, TOTAL_COST_TRANS) (SELECT DISTINCT CUST_ID,C FROM (
SELECT CUST_ID, SUM(COST_TRANS) OVER (PARTITION BY CUST_ID) as C FROM FAKE_CUST) WHERE C>1000)
INTO NORMAL_CUST(CUST_ID, TOTAL_COST_TRANS) (SELECT DISTINCT CUST_ID,C FROM (
SELECT CUST_ID, SUM(COST_TRANS) OVER (PARTITION BY CUST_ID) as C FROM FAKE_CUST) WHERE C<1000)
SELECT 1 FROM DUAL;
1 ответ
Решение
Синтаксис, который вы использовали для вставки в несколько таблиц, некорректен для начала.
WHEN
предложение, которое оценивает условие для вставки, должно предшествовать insert_into
пункт.
Ваш запрос должен выглядеть так:
INSERT ALL
WHEN c > 1000 THEN
INTO pre_cust (cust_id, total_cost_trans)
WHEN c < 1000 THEN
INTO normal_cust (cust_id, total_cost_trans)
SELECT CUST_ID, SUM(COST_TRANS) OVER (PARTITION BY CUST_ID) as C
FROM FAKE_CUST