MSSQL – Limit

Hallo,

heute mal wieder was der Rubrik, warum einfach, wenns auch schwer geht.
Das heutige Problem ist das folgende:
In Mysql kann ich folgendes schreiben:
select * from TABLENAME limit 0,10
Dies würde mir die ersten 10 Zeilen der Tabelle TABLENAME zurückgeben.
select * from TABLENAME limit 10,10
Dies würde mir die nächsten 10 Zeilen, der Tabelle TABLENAME zurückgeben.

Leider gibt es etwas derartig feines einfaches in MSSQL nicht.

Nun sind wir im Internet immer wieder auf die folgende Lösung gestossen:

DECLARE @rowsperpage INT
DECLARE @start INT

SET @start = 0
SET @rowsperpage = 10

SELECT *
FROM (
SELECT row_number() OVER (ORDER BY SPALTENNAME_NACH_DEM_SORTIERT_WERDEN_SOLL) AS rownum, SPALTE_1, SPALTE_2,SPALTE_N
FROM TABLENAME
) AS A
WHERE A.rownum BETWEEN (@start) AND ((CASE WHEN @start > 0 THEN @start-1 ELSE @start END)+ @rowsperpage)

Dieses kleine Script gibt nun die ersten 10 Zeilen der nach „SPALTENNAME_NACH_DEM_SORTIERT_WERDEN_SOLL“ sortierten Tabelle zurück.

Viel Spass damit 🙂

Dieser Beitrag wurde unter MSSQL abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.