Cómo limitar el número de filas que me regresa una consulta en SQL Server utilizando la cláusula OFFSET FETCH

Las cláusulas OFFSET y FETCH se utilizan con la cláusula ORDER BY. Las cuales te permiten limitar el número de filas que devolverá una consulta.


A continuación, se ilustra la sintaxis de las cláusulas OFFSET y FETCH:

  • ORDER BY column_list [ ASC | DESC ]
  • OFFSET offset_row_count { ROW | ROWS }
  • FETCH { FIRST | NEXT } fetch_row_count { ROW | ROWS } ONLY
La sintaxis es la siguiente:
  • La cláusula OFFSET especifica el número de filas a omitir antes de comenzar a devolver filas desde la consulta. offset_row_count puede ser una constante, variable o parámetro que sea mayor o igual a cero.
  • La cláusula FETCH especifica el número de filas que se devolverán después de que se haya procesado la cláusula OFFSET . offset_row_count puede ser una constante, variable o escalar que sea mayor o igual a uno.
  • La cláusula OFFSET es obligatoria, mientras que la cláusula FETCH es opcional. Además, FIRST y NEXT son sinónimos respectivamente, por lo que puede usarlos indistintamente. Del mismo modo, puede usar FIRST y NEXT indistintamente.

A continuación se ilustran las cláusulas OFFSET y FETCH:

FIRST y NEXT sql server

Ten en cuenta que debe usar las cláusulas OFFSET y FETCH con la cláusula ORDER BY. De lo contrario, recibirás un error.

Las cláusulas OFFSET y FETCH son preferibles para implementar la solución de paginación de consultas que la cláusula TOP.

Ejemplos de OFFSET y FETCH en SQL Server

Utilizaremos una la tabla de productos de la base de datos de ejemplo que puedes descargar aquí.

tutorial sql server

La siguiente consulta devuelve todos los productos de la tabla de products y los ordena por sus precios de lista y nombres:

SELECT
    product_name,
    list_price
FROM
    production.products
ORDER BY
    list_price,
    product_name;

select top sql

Para omitir los primeros 10 productos y devolver el resto, use la cláusula OFFSET como se muestra en la siguiente declaración:

SELECT
    product_name,
    list_price
FROM
    production.products
ORDER BY
    list_price,
    product_name 
OFFSET 10 ROWS;

top 100 sql server

Para omitir los primeros 10 productos y seleccionar los siguientes 10 productos, use las cláusulas OFFSET y FETCH siguiente manera:

SELECT
    product_name,
    list_price
FROM
    production.products
ORDER BY
    list_price,
    product_name 
OFFSET 10 ROWS 
FETCH NEXT 10 ROWS ONLY;

paginar resultados sql

Para obtener los 10 productos más caros, use las cláusulas OFFSET y FETCH:

SELECT
    product_name,
    list_price
FROM
    production.products
ORDER BY
    list_price DESC,
    product_name 
OFFSET 0 ROWS 
FETCH FIRST 10 ROWS ONLY;

manual de sql server

En este ejemplo, la cláusula ORDER BY ordena los productos por sus precios de lista en orden descendente. Luego, la cláusula OFFSET omite la fila cero y la cláusula FETCH recupera los primeros 10 productos de la lista.

En este tutorial, ha aprendido a utilizar las cláusulas OFFSET FETCH SQL Server que limitan el número de filas devueltas por una consulta.

Artículos relacionados
¿Cómo obtener datos distintos en SQL Server con SQL Distinct?
¿Cómo obtener datos distintos en SQL Server con SQL Distinct?

En SQL Server, la palabra clave DISTINCT se us

¿Cómo crear una tabla en SQL Server?
¿Cómo crear una tabla en SQL Server?

En este tutorial, aprenderá a usar la i

Cómo filtrar por un rango de fechas en SQL Server con el operador BETWEEN
Cómo filtrar por un rango de fechas en SQL Server con el operador BETWEEN

La sentencia u operador BETWEEN de SQL le perm

0 Comentarios
Enviame un comentario