Cláusula OFFSET FETCH (SQL Server Compact)
La cláusula OFFSET-FETCHT proporciona una opción para capturar solo una ventana o una página de resultados del conjunto de resultados. OFFSET-FETCH solo puede utilizarse con la cláusula ORDER BY.
Sintaxis
[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]}
Argumentos
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
Especifica el número de filas que omitir, antes de empezar a devolver filas en la expresión de consulta. El argumento de la cláusula OFFSET puede ser un entero o una expresión que sea mayor o igual que cero. Puede usar ROW y ROWS indistintamente.FETCH { FIRST|NEXT } <rowcount expression> { ROW|ROWS } ONLY
Especifica el número de filas que se devuelven, tras procesar la cláusula OFFSET. El argumento de la cláusula FETCH puede ser un entero o una expresión que sea mayor o igual que uno. Puede usar ROW y ROWS indistintamente. Del mismo modo, FIRST y NEXT se pueden usar indistintamente.
Limitaciones en el uso de OFFSET-FETCH
ORDER BY debe usar de forma obligatoria las cláusulas OFFSET y FETCH.
La cláusula OFFSET debe usarse obligatoriamente con FETCH. Nunca se puede usar ORDER BY …. FETCH.
TOP no puede combinarse con OFFSET y FETCH en la misma expresión de consulta.
La expresión de recuento de filas OFFSET/FETCH puede ser cualquier expresión aritmética, constante o de parámetros que devuelva un valor entero. La expresión de recuento de filas no admite subconsultas escalares.
Ejemplo
En los ejemplos siguientes se muestra el uso de la cláusula OFFSET-FETCH con ORDER BY.
Ejemplo 1 Se omiten las 10 primeras filas del conjunto de resultados ordenado y se devuelven las filas restantes.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;
Ejemplo 2 Se omiten las 10 primeras diez filas del conjunto de resultados ordenado y se devuelven las 5 filas siguientes.
SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;