Преобразование запроса доступа в оракул (подсоединения) - PullRequest
0 голосов
/ 12 октября 2018

Я застрял в этой точке, пытаясь преобразовать следующий запрос доступа в оракул.В этот момент я получаю ошибку SQL Error: ORA-00907: missing right parenthesis, хотя, может быть, причина в чем-то другом?Если я удаляю строку IIf полностью, я все еще получаю ту же ошибку.

SELECT Table01.Land
FROM Table01 
RIGHT JOIN (Table02 
RIGHT JOIN ((Table03
LEFT JOIN Table04 ON Table03.ARTNR = Table04.ARTNR)
LEFT JOIN Table05 ON Table03.ARTNR = Table05.ARTNR) ON Table02.Vertreter = Table05.VERTRNR) ON Table01.Land = Table05.LAND

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

В вашем запросе основная таблица - Table03.Из него вы выполняете серию внешних соединений с другими таблицами.Простейший способ преобразования объединения в Oracle:

SELECT
    Table03.KONZERN, Table05.FIRMNR, Table05.ARTNR, Table05.FORM, 
    Table05.Au, Table05.PRKW, Table05.LFKW, Table05.KNDKBZ, 
    Table05.AUFTRNR, Table05.LIEFNR, Table05.LAND, Table05.GAT, 
    Table05.KOMMI, Table05.TRNR, Table05.KNDNR, Table04.PlaZ, 
    Table03.GF, Table04.GP, Table05.ARTNR2, Table05.von_AF, 
    Table04.EU, Table04.NA,
    -- the following line needs to be changed to: CASE WHEN ELSE END
    IIf(Table01.Land_2, IIf(Table02.Vertreter>="0", Vertreter_Land,Land_2)) AS LAND2,
    Table01.Land, Table02.Vertreter_Land
  FROM Table03 
  LEFT JOIN Table04 ON Table03.ARTNR = Table04.ARTNR
  LEFT JOIN Table05 ON Table03.ARTNR = Table05.ARTNR
  LEFT JOIN Table02 ON Table02.Vertreter = Table05.VERTRNR
  LEFT JOIN Table01 ON Table01.Land = Table05.LAND

Примечание : я действительно не знаю, как именно работают функции IIF().Скорее всего, вы можете заменить его стандартным CASE WHEN END в SQL.

0 голосов
/ 12 октября 2018

Единственный способ соединить ваши объединения - это путь, основанный на ваших отношениях.

FROM Table01 
LEFT JOIN Table05 ON Table01.Land = Table05.LAND
RIGHT JOIN Table02 ON Table02.Vertreter = Table05.VERTRNR
RIGHT JOIN Table03 ON Table03.ARTNR = Table05.ARTNR 
LEFT JOIN Table04 ON Table03.ARTNR = Table04.ARTNR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...