... where rownum = 1 order by trans_date desc
यह मनमाने ढंग से चुने गए एक रिकॉर्ड का चयन करता है (where rownum = 1
) और फिर इस एक रिकॉर्ड को सॉर्ट करें (order by trans_date desc
)।
जैसा कि इवान द्वारा दिखाया गया है, आप एक सबक्वेरी का उपयोग कर सकते हैं जहां आप रिकॉर्ड ऑर्डर करते हैं और फिर पहला रिकॉर्ड where rownum = 1
के साथ रखते हैं। बाहरी क्वेरी में। हालांकि, यह अत्यंत Oracle-विशिष्ट है और SQL मानक का उल्लंघन करता है जहां एक सबक्वेरी परिणाम को अनियंत्रित माना जाता है (अर्थात खंड द्वारा क्रम को DBMS द्वारा अनदेखा किया जा सकता है)।
तो बेहतर है कि मानक समाधान के साथ जाएं। 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;