Как преобразовать (+) в соответствующее соединение в снежинке

Может ли кто-нибудь сказать мне, как преобразовать Oracle (+) как объединение в снежинки, есть ли какой-либо возможный способ преобразования.

У меня есть очень сложный SQL-скрипт из 1k строк, для которого требуется 30+ (+) операторов в качестве соединений.

Может ли кто-нибудь помочь мне


person Sacred Games    schedule 27.03.2020    source источник
comment
У вас есть пример того, что вы имеете в виду?   -  person Mike Walton    schedule 27.03.2020


Ответы (2)


Вы можете преобразовать синтаксис внешнего соединения Oracle в синтаксис ANSI. Таким образом, он будет совместим со Snowflake и остальным миром (даже Oracle поддерживает синтаксис соединения ANSI). Вы должны переписать их вручную, но это не тяжелая работа:

Оракул:

SELECT d.department_name,
       e.employee_name      
FROM   departments d, employees e
WHERE  d.department_id = e.department_id (+) 
AND    d.department_id >= 30
ORDER BY d.department_name, e.employee_name;

ANSI

SELECT d.department_name,
       e.employee_name     
FROM   departments d
       LEFT OUTER JOIN employees e ON d.department_id = e.department_id
WHERE  d.department_id >= 30
ORDER BY d.department_name, e.employee_name;

Вы можете найти объяснения на этой странице (для левого / правого / внешнего соединения):

https://oracle-base.com/articles/misc/sql-for-beginners-joins#left-outer-join.

person Gokhan Atil    schedule 27.03.2020

Snowflake поддерживает оператор (+) в соответствии с документация по пункту WHERE.

person Brock Noland    schedule 03.08.2020