Wenn die Entscheidung, welcher Satz der letzte ist, von anderen Werten abhängt, so stimmt einfach die Sortierung nicht.
Prüfe doch einfach, inwieweit du die Sortierung beeinflussen kannst.
Hilfreich können hier CTE und Case-Ausdrücke sein:

with xTemp as (
select ...., case when Bedingung then Wert else Wert2 end as MySort, ...
from ...
)
select * from xTemp order by MySort


rrn(x) ist keine Lösung, da bei REUSEDLT(*YES), Standard bei SQL-Tables, rrn nicht die Eingangsfolge ist.