ORA-01722:编号无效,但仅当查询用作子查询时

时间:2018-09-06 18:26:48

标签: oracle oracle10g

查询,如下所示:

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

单独运行时按预期工作。

供参考:

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

此查询移到子查询时,我收到一个ORA-01722错误,该错误参考select子句中的“ col2”位置。较大的查询如下所示:

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 相同。如果我使用来自table2的子查询,则它可以工作。使用table1时永远无法使用。

没有串联,数据类型匹配,查询本身起作用...我在这里很茫然。我还要寻找什么?到底什么东西困扰着我?

(我没有选择或创建表结构,也无法更改它们,因此不幸的是,这样做的答案将无济于事。)

1 个答案:

答案 0 :(得分:0)

尝试使用正确的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