Hallo Marc,
Idee: Nutze für die Daten eine (temporäre) Tabelle, die Du per CREATE TABLE ... AS SELECT mit einer ORDER-BY-Klausel füllst. Deren ROWID passt genau auf Deine im Ausgangspost gestellten Anforderungen, siehe http://www.sqlite.org/lang_createtable.html.
Ich denke aber dass es sich in diesem Falle für mich sogar lohnt, auf die temporäre Tabelle zu verzichten und diesen Counter manuell als Spalte einzupflegen.
die Pflege des Counters ist bei allen INSERT- und DELETE-Operationen erforderlich - sowie bei UPDATE-Operationen, die den Inhalt der Sortierspalte verändern. Könnte mit Triggern klappen, auch ohne temporäre Tabelle, mit einem CASE-WHEN-THEN-ELSE-Konstrukt.
Freundliche Grüße
Vinzenz