Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORACLE 12.2.01 selecionando colunas de diferentes tabelas com nomes semelhantes --> identificador de coluna interno usado


De acordo com a Oracle (DocId 2658003.1), isso acontece quando três condições são atendidas:
  1. Participação ANSI
  2. UNIÃO / UNIÃO DE TODOS
  3. a mesma tabela aparece mais de uma vez na consulta

Aparentemente, "QCSJ_C" é usado internamente quando o Oracle transforma junções de estilo ANSI.

EDITAR:

Encontrei um exemplo mínimo:
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;

QCSJ_C000000000300000 QCSJ_C000000000300001
X                     X

Ele pode ser corrigido usando a sintaxe de junção não ANSI:
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy;

DUMMY DUMMY_1
X     X

Ou, de preferência, usando nomes de coluna em vez de * :
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;

DUMMY DUMMY_1
X     X