ORA-00933: команда SQL неправильно завершилась в выражении pyspark

#sql #oracle #ora-00933

#sql #Oracle #ora-00933

Вопрос:

я не могу понять, что не так с этим запросом. Кто-нибудь может объяснить мне, где ошибка. Большое вам спасибо

 SELECT
  WF1.GUID,
  WF1.COD_FONTE,
  WF1.NOME_FILE,
  VW.COD_STEP_PRECEDENTE,
  VW.COD_STEP_ATTUALE AS WF1
FROM
  MONITOR.FILE_WORKFLOW
  INNER JOIN MONITOR.VW_JOB_FONTE_STEP AS VW ON WF1.COD_FONTE = VW.COD_FONTE
  AND VW.JOB_KEY = 'FLATTENER'
WHERE
  WF1.GUID = '5f58d00b6102ab20a8d5c83f'
  AND WF1.ESITO = 'OK'
  AND WF1.COD_STEP = VW.COD_STEP_PRECEDENTE
  AND NOT EXISTS (
    SELECT
      1
    FROM
      MONITOR.FILE_WORKFLOW AS WF2
    WHERE
      WF2.GUID = '5f58d00b6102ab20'
      AND WF2.ESITO = 'OK'
      AND WF2.COD_STEP = VW.COD_STEP_ATTUALE
      AND WF1.IDE_FILE_WORKFLOW_PARENT = WF2.IDE_FILE_WORKFLOW_PARENT
  )
  

Ответ №1:

Я уверен, что вы неправильно используете псевдоним таблицы

 VW.COD_STEP_ATTUALE AS WF1 <-- WF1 is a column alias 
FROM
MONITOR.FILE_WORKFLOW
                                              
INNER JOIN MONITOR.VW_JOB_FONTE_STEP AS VW 
  ON WF1.COD_FONTE = VW.COD_FONTE <-- here you are using WF1 as a table alias
  

Я предполагаю, что это устранит проблему

 VW.COD_STEP_ATTUALE
FROM
MONITOR.FILE_WORKFLOW WF1 <-- alias name goes here
  

Комментарии:

1. Ни один из псевдонимов таблицы не должен иметь «AS» — Oracle разрешает это для псевдонимов столбцов, но не для псевдонимов таблиц.

2. @AlexPoole вы правы, спасибо! Просто скопировал это, не обращая внимания на детали

3. я удалил все КАК, но все равно получил ошибку: cx_Oracle. Ошибка базы данных: ORA-00942: таблица или представление не существует

4. @FracescoSciarra проверьте, правильны ли имена таблиц и имеет ли пользователь к ним доступ. Войдите в систему как этот пользователь и попробуйте выбрать как из MONITOR.VW_JOB_FONTE_STEP, так и из MONITOR.FILE_WORKFLOW

5. @FracescoSciarra — вам все равно нужно переместить псевдоним WF1 из столбца в таблицу, как показано в этом ответе; неясно, сделали ли вы это.