Многотабличное значение вставки из другой таблицы

У меня есть таблицы - 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
Другие вопросы по тегам