Saltar al contenido

¿Hay alguna manera de dar un alias a una subconsulta en Oracle 11g SQL?

Solución:

Puede asignar un nombre o alias a una consulta con CTE (Expresiones de tabla comunes), también conocida como cláusula WITH, también conocida por Oracle como Factorización de subconsultas:

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;

No tengo una instancia de Oracle para probar, pero lo que publicó debe ser una sintaxis ANSI-89 JOIN válida. Aquí está en 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

Tu consulta debería estar bien.

Una alternativa sería:

select abc.client_ref_id, abc.request, def.response
from   some_table abc,
       some_table def
where  abc.client_ref_id = def.client_ref_id
and    abc.message_type = 1
and    def.message_type = 2;

No me sorprendería que Oracle reescribiera las consultas para que el plan fuera el mismo de todos modos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *