... where rownum = 1 order by trans_date desc
Ini memilih satu catatan yang dipilih secara sewenang-wenang (where rownum = 1
) dan kemudian mengurutkan satu record ini (order by trans_date desc
).
Seperti yang ditunjukkan oleh Ivan Anda dapat menggunakan subquery di mana Anda memesan catatan dan kemudian menyimpan catatan pertama dengan where rownum = 1
dalam kueri luar. Namun, ini sangat spesifik untuk Oracle dan melanggar standar SQL di mana hasil subquery dianggap tidak berurutan (yaitu klausa urutan per dapat diabaikan oleh DBMS).
Jadi lebih baik gunakan solusi standar. Pada Oracle 12c:
select *
from table_name
order by trans_date desc
fetch first 1 row only;
Dalam versi yang lebih lama:
select *
from
(
select t.*, row_number() over (order by trans_date desc) as rn
from table_name t
)
where rn = 1;