У меня проблема с корреляцией подзапроса в 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
Так, не вариант, так как запрос становится вечным.
С уважением!