OFFSET-FETCH-Klausel (SQL Server Compact)
Die OFFSET-FETCH-Klausel gibt Ihnen die Möglichkeit, nur ein Fenster oder eine Seite mit Ergebnissen aus dem Resultset abzurufen. OFFSET-FETCH kann nur mit der ORDER BY-Klausel verwendet werden.
Syntax
[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ]
<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS } [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY]}
Argumente
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
Gibt die Anzahl der Zeilen an, die übersprungen werden sollen, bevor Zeilen aus dem Abfrageausdruck zurückgegeben werden. Das Argument der OFFSET-Klausel kann eine ganze Zahl oder ein Ausdruck sein, der größer oder gleich NULL ist. Sie können ROW und ROWS synonym verwenden.FETCH { FIRST|NEXT } <rowcount expression> { ROW|ROWS } ONLY
Gibt die Anzahl der Zeilen an, die nach der Verarbeitung der OFFSET-Klausel zurückgegeben werden sollen. Das Argument der FETCH-Klausel kann eine ganze Zahl oder ein Ausdruck sein, der größer oder gleich EINS ist. Sie können ROW und ROWS synonym verwenden. In gleicher Weise können FIRST und NEXT synonym verwendet werden.
Einschränkungen bei der Verwendung von OFFSET-FETCH
ORDER BY ist bei Verwendung der OFFSET- und der FETCH-Klausel obligatorisch.
Die OFFSET-Klausel ist für FETCH obligatorisch. Sie können niemals ORDER BY … FETCH verwenden.
TOP kann im selben Abfrageausdruck nicht mit OFFSET und FETCH kombiniert werden.
Der Zeilenanzahlausdruck für OFFSET/FETCH kann ein arithmetischer, konstanter oder Parameterausdruck sein, von dem ein Wert für eine ganze Zahl zurückgegeben wird. Skalarunterabfragen werden im Zeilenanzahlausdruck nicht unterstützt.
Beispiel
In den folgenden Beispielen wird die Verwendung der OFFSET-FETCH-Klausel mit ORDER BY veranschaulicht.
Beispiel 1: Die ersten 10 Reihen des sortierten Resultsets werden übersprungen und die verbleibenden Reihen zurückgegeben.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;
Beispiel 2: Die ersten 10 Reihen des sortierten Resultsets werden übersprungen und die nächsten 5 Reihen zurückgegeben.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;