Is there a way to give a subquery an alias in Oracle 11g SQL? Is there a way to give a subquery an alias in Oracle 11g SQL? oracle oracle

Is there a way to give a subquery an alias in Oracle 11g SQL?


You can give a query a name or alias with CTE’s (Common Table Expressions) aka WITH clause aka by Oracle as Subquery Factoring:

WITH abc as (select client_ref_id, request from some_table where message_type = 1)select * from abc    inner join     (select client_ref_id, response  from some_table where message_type = 2) defg       on abc.client_ref_id = def.client_ref_id;


I don't have an Oracle instance to test with, but what you posted should be valid ANSI-89 JOIN syntax. Here it is in ANSI-92:

SELECT *  FROM (SELECT client_ref_id, request           FROM SOME_TABLE          WHERE message_type = 1) abc  JOIN (SELECT client_ref_id, request           FROM SOME_TABLE          WHERE message_type = 1) defg ON defg.client_ref_id = abc.client_ref_id


Your query should be fine.

An alternative would be:

select abc.client_ref_id, abc.request, def.responsefrom   some_table abc,       some_table defwhere  abc.client_ref_id = def.client_ref_idand    abc.message_type = 1and    def.message_type = 2;

I wouldn't be surprised if Oracle rewrote the queries so that the plan would be the same anyway.