sql >> Base de Datos >  >> RDS >> Oracle

ORACLE 12.2.01 seleccionando columnas de diferentes tablas con nombres similares --> identificador de columna interno utilizado

Según Oracle (DocId 2658003.1), esto sucede cuando se cumplen tres condiciones:

  1. Únete a ANSI
  2. UNIÓN / UNIÓN TODOS
  3. la misma tabla aparece más de una vez en la consulta

Aparentemente, "QCSJ_C" se usa internamente cuando Oracle transforma uniones de estilo ANSI.

EDITAR:

Encontré un ejemplo 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

Se puede arreglar usando una sintaxis de combinación que no sea 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

O, preferiblemente, usando nombres de columna en lugar 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