ORA-00904: 相关子查询上的列名无效

Posted

技术标签:

【中文标题】ORA-00904: 相关子查询上的列名无效【英文标题】:ORA-00904: Invalid column name on a correlated subquery 【发布时间】:2018-10-11 20:18:26 【问题描述】:

我在关联 Oracle 8i 上的子查询时遇到问题

那个子查询给了我一个 ORA-00904:无效的列名,我不明白为什么。它不应该工作吗?

SELECT
    HIST_FA.HIFA_PLAN_CODIGO                                                AS FE_CODIGO_PLANTEL,
    HIST_FA.HIFA_NUMERO                                                     AS FE_NUMERO_CONTROL,
    HIST_FA.HIFA_FECHA                                                      AS FE_FECHA_HORA_EMISION,
    HIST_FA.HIFA_DEST_CLIE_CODIGO                                           AS FE_CODIGO_CLIENTE,
    --  . . . a bunch of other columns . . .
FROM
    VFA_HIST_FA HIST_FA,
    VFA_HIST_ITEMS_FA HIST_ITEMS_FA,
    (
        SELECT
            HIRF_HIIF_HIFA_NUMERO                                           AS FE_NUMERO_CONTROL,
            SUM(DECODE(HIRF_RETE_CODIGO, 0, HIRF_MONTO))                    AS FE_MONTO_ENTREGADO,
            SUM(DECODE(HIRF_RETE_CODIGO, 5, HIRF_MONTO))                    AS FE_IMPUESTO_UNICO,
            SUM(DECODE(HIRF_RETE_CODIGO, 6, HIRF_MONTO))                    AS FE_MARGEN_COMERCIALIZACION
        FROM
            VFA_HIST_ITEMS_RETENC_FA
        WHERE
            HIRF_HIIF_HIFA_NUMERO = HIST_FA.HIFA_NUMERO
        GROUP BY
            HIRF_HIIF_HIFA_NUMERO
    ) PP  
WHERE
    HIST_FA.HIFA_NUMERO = HIST_ITEMS_FA.HIIF_HIFA_NUMERO;

当然,我可以在主WHERE 中执行此操作,但随后它会扫描内部行中的所有行。

HIST_FA.HIFA_NUMERO = PP.FE_NUMERO_CONTROL

所以,这不是一个选择,因为查询变得永远存在。

最好的问候!

【问题讨论】:

甲骨文 8i?哇......这带来了回忆。 对 Oracle 8i 的扩展支持于 2006 年结束。当然,十多年前应该升级的时间已经过去了。 @TheImpaler LOL @GordonLinoff 我知道,但不是我。这是恐龙客户,除了和它合作我什么都做不了 @JuanDiego 有了这些回忆,现在我想去喝啤酒。叹息。 【参考方案1】:

更改列名的别名 HIRF_HIIF_HIFA_NUMERO AS FE_NUMERO_CONTROL 换成其他名字,然后再试一次。

【讨论】:

它不起作用,除非我做得不好,你能更具体一点吗?我的意思是,我确实更改了别名,但仍然是臭名昭著的 ORA00904。

以上是关于ORA-00904: 相关子查询上的列名无效的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00904: 标识符无效但表名和列名正确?

ora 00904标识符无效

ORACLE ORA-00904: 无效标识符错误

如何在分层查询内的相关子查询中传递外部表值

带有子查询的 SQL 更新

模糊 ORA-00904 标识符无效错误