0

看起来 Oracle 在子查询中没有看到 c 别名。返回的错误是:ORA-00904: "C"."FLH_PUNTO_EROGAZIONE": identificativo non valido

似乎 oracle 只是在 1 度外部语句中查找别名

SELECT (SELECT 1
          FROM (SELECT 1 AS SomeAlias
                  FROM out.ANAG_PDF_PWR_T840
                 WHERE campo34 = c.flh_punto_erogazione
                UNION
                SELECT 1
                  FROM out.ANAG_PDF_T812
                 WHERE campo34 = c.flh_punto_erogazione) Something)
  FROM etl_elab_interf_flat f, eni_flussi_hub c,  eni_info_extra_forn ief, conf_forniture forn
 WHERE     f.eif_campo198(+) = c.flh_id_messaggio
       AND f.idde_identif_dati_ext_id(+) = c.idde_identif_dati_ext_id
AND c.flh_punto_erogazione IN ('8003576015', '8003576054', '8003576551', '8003576565')
       AND eif_campo200 IN ('FORNITURA_ENI')
       AND c.flh_flag_ann = 'N'
       --
       AND forn.forn_old_codice_fornitura (+) = c.flh_fornitura
       AND forn.forn_fornitura_id  = ief.forn_fornitura_id(+);
4

1 回答 1

0

我没有看到c.flh_punto_erogazioneand 或查询有任何问题,因为它的工作方式类似于 -

SQL> select (select 1 
               from dual b 
              where c.dummy||'YZ'=b.dummy||'YZ') col
       from dual c
      where c.dummy||'YZ'='XYZ';

COL
----------
1

除非该列flh_punto_erogazione在表中不存在eni_flussi_hub,或者您可能拼错了它。

于 2012-10-11T18:26:00.810 回答