Considere la tabla1 y la tabla2 con una relación de uno a varios (la tabla1 es la tabla maestra y la tabla2 es la tabla de detalles). Quiero obtener registros de la tabla 1, donde algún valor ('XXX') es el valor del registro más reciente en la tabla 2 de los registros de detalle correlacionados con la tabla1. Lo que quiero hacer es lo siguiente:Problema de subconsulta correlacionada anidada de Oracle
select t1.pk_id
from table1 t1
where 'XXX' = (select a_col
from ( select a_col
from table2 t2
where t2.fk_id = t1.pk_id
order by t2.date_col desc)
where rownum = 1)
Pero, debido a que la referencia a la tabla 1 (T1) en la subconsulta correlacionada es de dos niveles de profundidad, que aparece con un error de Oracle (no válido t1 id). Necesito poder reescribir esto, pero la única advertencia es que solo se puede cambiar la cláusula where (es decir, la selección inicial y la opción deben permanecer sin cambios). Se puede hacer?
Voy a intentar esto. Lo comprobaré más tarde. Gracias. – GriffeyDog
Gracias Dave, cada ejemplo funciona muy bien. Estaba pensando que esto podría hacerse con funciones analíticas, pero no estaba muy seguro de cómo escribirlo. – GriffeyDog
¿Qué sucede si quiero el segundo, tercer y siguiente resultado con esa cláusula order by? ¿Es posible usando este enfoque? – Sawd