Pregunta

I have tables - FAKE_CUST, PRE_CUST, NORMAL_CUST. Based on the constraint present in FAKE_CUST table, the value has to be brought to either PRE_CUST or NORMAL_CUST.

I am using the follwing code:

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;
¿Fue útil?

Solución

The syntax which you have used for multi-table insert is not correct to start with.

The WHEN clause, which evaluates the condition for insert, has to come before insert_intoclause.

Your query should look like this:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top