Ich stand neulich vor dem Problem ein begrenzes Resultset zu benötigen, das genau Eintrag x bis y aus der Tabelle einer Datenbank (DB2) beinhaltet.
Vor dieser Herausforderung stehen mit Sicherheit viele Entwickler die sich mit Suchabfragen, Foreneinträgen oder Artikelauflistungen beschäftigen. Nämlich genau immer dann, wenn es darum geht ein Paging zu implementieren in dem nicht alle Ergebnisse auf einmal, sodern gestaffelnt nach n Einträgen angezeigt werden sollen. Aber wie formuliere ich dazu ein Statement? Eine nette Kollegin konnte helfen:
with temp as ( select Name, Vorname, Alter, rownumber() over (order by Alter) as row from Tabelle ) select Name, Vormane, Alter from temp where row between 100 and 200; |
Wir hängen also nur eine weitere Spalte an unser Resultset dran (row) und füllen diese über die vordefinierte Funktion “rownumber()”. Dadurch wird “row” durchnummeriert und wir können einfach Eintrag 100 – 200 abfragen.