As the bfavaretto commented you should already be using the best option for your requirements.
Note you want to:
- The last three records.
- Displays them sorted by name.
For the first requirement you must use the top 3 and a date ordering to return the records you want. With the three records in hand you order them only p/visual issues.
Using a self Join or a table variable can do this but I doubt it’s + efficient (but an Acid test is required to be sure).
The answer of Pedro Laini does not meet the second requirement pq the ordination by date will take precedence in the result presented.
Guilherme Torres' answer is not Reliable may fail if there are "gaps" between Ids (caused by deletion for example). In addition, no correlation was cited between date and Id.
The only other reasonable option (depending on the context) would be to sort the three records returned in the UI or Service.
It could also be a self-join. You need to test both options to see which has the best performance (I’m currently without SQL Server). Anyway, it seems a good solution.
– bfavaretto