Eintrag x bis y aus einer Tabelle zurückgeben

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.

Leave a Reply

Your email address will not be published. Required fields are marked *