... where rownum = 1 order by trans_date desc
Dette vælger én post vilkårligt valgt (where rownum = 1
) og sorterer derefter denne ene post (order by trans_date desc
).
Som vist af Ivan kan du bruge en underforespørgsel, hvor du bestiller posterne og derefter beholde den første post med where rownum = 1
i den ydre forespørgsel. Dette er dog ekstremt Oracle-specifikt og overtræder SQL-standarden, hvor et underforespørgselsresultat betragtes som uordnet (dvs. orden efter klausulen kan ignoreres af DBMS).
Så hellere gå med standardløsningen. Fra 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;