sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo seleccionar el top 1 y ordenar por fecha en Oracle SQL?

... where rownum = 1 order by trans_date desc

Esto selecciona un registro elegido arbitrariamente (where rownum = 1 ) y luego ordena este único registro (order by trans_date desc ).

Como lo muestra Ivan, puede usar una subconsulta donde ordena los registros y luego mantiene el primer registro con where rownum = 1 en la consulta externa. Esto, sin embargo, es extremadamente específico de Oracle y viola el estándar SQL donde el resultado de una subconsulta se considera desordenado (es decir, el DBMS puede ignorar la cláusula order by).

Así que mejor ve con la solución estándar. A partir de Oracle 12c:

select * 
from table_name 
order by trans_date desc
fetch first 1 row only;

En versiones anteriores:

select *
from
(
  select t.*, row_number() over (order by trans_date desc) as rn
  from table_name t
)
where rn = 1;