... where rownum = 1 order by trans_date desc
Това избира един запис, избран произволно (where rownum = 1
) и след това сортира този един запис (order by trans_date desc
).
Както е показано от Иван, можете да използвате подзаявка, където поръчвате записите и след това да запазите първия запис с where rownum = 1
във външната заявка. Това обаче е изключително специфично за Oracle и нарушава стандарта SQL, при който резултатът от подзаявката се счита за неподреден (т.е. клаузата за подреждане може да бъде игнорирана от СУБД).
Така че е по-добре да изберете стандартното решение. От Oracle 12c:
select *
from table_name
order by trans_date desc
fetch first 1 row only;
В по-стари версии:
select *
from
(
select t.*, row_number() over (order by trans_date desc) as rn
from table_name t
)
where rn = 1;