... where rownum = 1 order by trans_date desc
Detta väljer en post godtyckligt vald (where rownum = 1
) och sorterar sedan denna post (order by trans_date desc
).
Som visas av Ivan kan du använda en underfråga där du beställer posterna och sedan behålla den första posten med where rownum = 1
i den yttre frågan. Detta är dock extremt Oracle-specifikt och bryter mot SQL-standarden där ett subquery-resultat anses vara oordnat (d.v.s. order by-satsen kan ignoreras av DBMS).
Så det är bättre att gå med standardlösningen. Från och med Oracle 12c:
select *
from table_name
order by trans_date desc
fetch first 1 row only;
I äldre versioner:
select *
from
(
select t.*, row_number() over (order by trans_date desc) as rn
from table_name t
)
where rn = 1;