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;