Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
juanpelaezisgal
Contributor II
Contributor II

Error ORA-00918: columna definida de forma ambigua

Buenos días,

Haciendo un Script para atacar una Base de Datos de Oracle me da el siguiente error al ejecutar la consulta y no logro ver que está mal  ….

OLEDB CONNECT TO [Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=lectura;Data
Source=XXXXXXX;Extended Properties=""] (XPassword is XXXXXXXXXXXXXXXXXX);
 
SQL SELECT PRO.IDPROYECTO_CONTABLE, PRO.DESCRIPCION, PRO.ESTADO, EXTRACT(YEAR FROM FCREACION) AS ACRE, EXTRACT(MONTH FROM FCREACION) AS MCRE,EXTRACT(DAY FROM FCREACION) AS DCRE, to_char(FCREACION, 'YYYY-MM-DD') AS FCREA,to_char(FCREACION, 'DD-MM-YYYY') AS FCREAINV,
 PRO.FMODIFICACION, PRO.FBAJA, PRO.IDUSUARIOCRE, PRO.IDUSUARIOMOD, PRO.IDUSUARIOBAJ, PRO.IDEMPRESA, PRO.CODIGO AS CODPROYECTO FROM DEVELOPER.PROYECTO_CONTABLE PRO ORDER BY CODIGO ;
 
SQL SELECT PRE.IDPRESUPUESTOCLI, PRE.IDSERIE_PRESUPUESTOCLI, PRE.IDCLIENTE, PRE.IDEST_PRESUPUESTOCLI, to_char(FCREACION, 'YYYY-MM-DD') AS FCREAPRE, to_char(FCREACION, 'DD-MM-YYYY') AS FCREAPREINV,PRE.NPRESUPUESTOCLI, PRE.IDPROYECTO_CONTABLE, PRE.VERSION,DTO AS DTOPRESU
 FROM DEVELOPER.PRESUPUESTOCLI PRE JOIN DEVELOPER.PROYECTO_CONTABLE PRO ON  PRE.IDPROYECTO_CONTABLE = PRO.IDPROYECTO_CONTABLE WHERE PRO.IDPROYECTO_CONTABLE > 0;
 
El error lo da al ejecutar el segundo SQL, tengo claro que es en el JOIN pero he revisado manuales de Oracle y la definición, en principio, es correcta.
 
El error :
 
ErrorSource: OraOLEDB, ErrorMsg: ORA-00918: columna definida de forma ambigua
SQL SELECT PRE.IDPRESUPUESTOCLI, PRE.IDSERIE_PRESUPUESTOCLI, PRE.IDCLIENTE, PRE.IDEST_PRESUPUESTOCLI, to_char(FCREACION, 'YYYY-MM-DD') AS FCREAPRE, to_char(FCREACION, 'DD-MM-YYYY') AS FCREAPREINV,PRE.NPRESUPUESTOCLI, PRE.IDPROYECTO_CONTABLE, PRE.VERSION,DTO AS DTOPRESU
FROM DEVELOPER.PRESUPUESTOCLI PRE JOIN DEVELOPER.PROYECTO_CONTABLE PRO ON PRE.IDPROYECTO_CONTABLE = PRO.IDPROYECTO_CONTABLE WHERE PRO.IDPROYECTO_CONTABLE > 0
 
Alguien que pueda arrojar alguna LUZ ….
 
Gracias a todos.
 
 
4 Replies
aramirez
Contributor II
Contributor II

Hola,

El problema debe ser que alguno de los campos aparece en las dos tablas y no se indica de que tabla se debe coger. Creo que en el único campo que te falta indicar la tabla es FCREACION.

Espero esto te ayude a solucionar el error.

Un saludo

juanpelaezisgal
Contributor II
Contributor II
Author

El problema está en el JOIN y los campos de unión que son comunes, si le quito el JOIN funciona perfectamente pero si uno las tablas es cuando da el error …..

 

 

rubenmarin

Coincido con Aramirez, prueba poniendo "to_char(PRE.FCREACION", también puede ser por el campo DTO, que tampoco identifica si viene de PRE o de PRO.

Saludos.
juanpelaezisgal
Contributor II
Contributor II
Author

Buenos días,

SI, habéis acertado, no me había dado cuenta que faltaba identificar esos campos …. de paso, ahora que ya funciona he fundido todo en una sola búsqueda ….

 

GRACIAS a todos.