INSERT INTO с СОЕДИНЕНИЯМИ в Oracle - PullRequest
1 голос
/ 17 марта 2020

Привет! Я пытаюсь адаптировать этот пост в блоге к моим потребностям, используя Oracle для моделирования архитектуры Data Vault.

С помощью следующего кода я пытаюсь построить link между двумя hubs ссылками на исходную source таблицу "orders".

INSERT INTO l_customer_order (customer_id_hk, order_id_hk, load_date, record_source)  
    SELECT DISTINCT h_customers.customer_id_hk, h_orders.orders_id_hk, SYSDATE, 'Customer+Order'
    FROM orders as src
    LEFT OUTER JOIN h_orders
    ON (h_orders.order_id =  src.order_id)
    LEFT OUTER JOIN h_customers
    ON (h_customers.customer_id = src.customer_id)
    LEFT OUTER JOIN l_customer_order AS dest
    ON (dest.customer_id_hk = h_customers.customer_id_hk) 
    AND  (dest.order_id_hk = h_orders.order_id_hk)
    WHERE dest.order_id_hk IS NULL;

Однако я получаю следующую ошибку.

Error at Command Line : 192 Column : 17
Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

Любая помощь или подсказка очень ценится!

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

В двух местах вы использовали ключевое слово as. Для предоставления псевдонима к таблице вам просто нужно написать имя псевдонима после имени таблицы. as не должен использоваться там.

Попробуйте следующий код: (изменения указаны в строке)

INSERT INTO l_customer_order (customer_id_hk, order_id_hk, load_date, record_source)  
    SELECT DISTINCT h_customers.customer_id_hk, h_orders.orders_id_hk, SYSDATE, 'Customer+Order'
    FROM orders src -- removed AS from here
    LEFT OUTER JOIN h_orders
    ON (h_orders.order_id =  src.order_id)
    LEFT OUTER JOIN h_customers
    ON (h_customers.customer_id = src.customer_id)
    LEFT OUTER JOIN l_customer_order dest -- removed AS from here
    ON (dest.customer_id_hk = h_customers.customer_id_hk) 
    AND  (dest.order_id_hk = h_orders.order_id_hk)
    WHERE dest.order_id_hk IS NULL;

Cheers !!

0 голосов
/ 17 марта 2020

Удалите as в вашем запросе, т.е. вместо

FROM orders as src

используйте

 FROM orders src

Oracle, не поддерживающий псевдоним as, если только это не / будет добавлено в большинстве текущих версий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...