2009-12-21 12 views
14

que estoy tratando de hacer un inner join en una instrucción de selección como esta:SQL combinación interna en determinados estados

select * 
from (select* from bars where rownum <= 10)as tab1 
inner join (select * from bars where rownum <= 10)as tab2 
on tab1.close=tab2.close 

y me da el siguiente error: ORA-00933 de comandos SQL no terminó correctamente Cualquier ayuda sería apreciado, ¡gracias!

Respuesta

39

Basta con retirar as de la consulta:

select * 
from (select* from bars where rownum <= 10) tab1 
inner join (select * from bars where rownum <= 10) tab2 
on tab1.close=tab2.close 
+1

Hola Egorius, gracias, funcionó. Todavía no entiendo por qué a veces Oracle acepta el as ya veces no – user235693

+5

'As' se puede (opcionalmente) utilizar antes de un alias COLUMN. Los alias de TABLE no pueden ser precedidos por 'as'. Por ejemplo: "select count (*) como cnt from dual d". –

+1

Es posible que desee echarle un vistazo al diagrama de sintaxis SELECT (es bastante grande, pero define la sintaxis exacta): http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_103a.htm#SQLRF01702 –

1
select * from 
((select* from bars where rownum <= 10)as tab1 
inner join (select * from bars where rownum <= 10)as tab2 
on tab1.close=tab2.close) 
2

Creo que el error proviene de que la necesidad de un punto y coma para terminar el comunicado. La selección se ve bien para mí de lo contrario.

1

acaba de dar un espacio en blanco entre ')' y 'como':

select * from (select* from bars where rownum <= 10) as tab1 
inner join 
(select * from bars where rownum <= 10) as tab2 
on 
tab1.close=tab2.close 
Cuestiones relacionadas