... where rownum = 1 order by trans_date desc
Powoduje to wybranie jednego arbitralnie wybranego rekordu (where rownum = 1
), a następnie sortuje ten jeden rekord (order by trans_date desc
).
Jak pokazał Ivan, możesz użyć podzapytania, w którym możesz uporządkować rekordy, a następnie zachować pierwszy rekord z where rownum = 1
w zewnętrznym zapytaniu. Jest to jednak bardzo specyficzne dla Oracle i narusza standard SQL, w którym wynik podzapytania jest uważany za nieuporządkowany (tj. klauzula order by może zostać zignorowana przez DBMS).
Więc lepiej wybierz standardowe rozwiązanie. Od Oracle 12c:
select *
from table_name
order by trans_date desc
fetch first 1 row only;
W starszych wersjach:
select *
from
(
select t.*, row_number() over (order by trans_date desc) as rn
from table_name t
)
where rn = 1;