ORA-01722: неверный номер, но только когда запрос используется как подзапрос - PullRequest
0 голосов
/ 06 сентября 2018

Запрос, например, так:

SELECT SUM(col1 * col3) AS total, col2
FROM table1
GROUP BY col2

работает как положено при запуске по отдельности.

Для справки:

table1.col1 -- float
table1.col2 -- varchar2
table1.col3 -- float

Когда этот запрос перемещается в подзапрос, я получаю ошибку ORA-01722 со ссылкой на позицию "col2" в предложении select. Большой запрос выглядит так:

SELECT col3, subquery1.total
FROM table3
LEFT JOIN (
    SELECT SUM(table1.col1 * table1.col3) AS total, table.1col2
    FROM table1
    GROUP BY table1.col2
) subquery1 ON table3.col3 = subquery1.col2

Для справки:

table3.col3 -- varchar2

Также стоит отметить, что у меня есть другой запрос, из table2 , который имеет ту же структуру, что и table1 . Если я использую подзапрос из таблицы 2, он работает. Это никогда не работает при использовании table1.

Конкатенация отсутствует, типы данных совпадают, запрос работает сам по себе ... Я в недоумении. Что еще я должен искать? Какая болезненно очевидная проблема - смотреть мне в лицо?

(Я не выбирал и не создавал структуры таблиц и не могу их изменить, поэтому ответы на этот вопрос, к сожалению, не помогут.)

1 Ответ

0 голосов
/ 06 сентября 2018

попробуйте использовать правильное приведение типа float к char ..

  SELECT col3, subquery1.total
  FROM table3
  LEFT JOIN (
      SELECT SUM(table1.col1 * table1.col3) AS total, table.1col2
      FROM table1
      GROUP BY table1.col2
  ) subquery1 ON to_char(table3.col3)  = subquery1.col2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...