ROW_NUMBER (Transact-SQL) (Español)

  • 11/09/2017
  • 5 minutos de lectura
    • j
    • c
    • M
    • m
    • M
    • +8

Se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Almacenamiento de datos en paralelo

Numera la salida de un conjunto de resultados. Más específicamente, devuelve el número secuencial de una fila dentro de una partición de un conjunto de resultados, comenzando en 1 para la primera fila de cada partición.

Nota

ROW_NUMBER es un valor temporal calculado cuando se ejecuta la consulta. Para conservar números en una tabla, consulte Propiedad de IDENTIDAD y SECUENCIA.

Convenciones de sintaxis de Transact-SQL

Sintaxis

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte la documentación de versiones anteriores.

Argumentos

PARTITION BY value_expression
Divide el conjunto de resultados producido por la cláusula FROM en particiones a las que se aplica la función ROW_NUMBER. value_expression especifica la columna por la que se particiona el conjunto de resultados. Si no se especifica PARTITION BY, la función trata todas las filas del conjunto de resultados de la consulta como un solo grupo. Para obtener más información, consulte la cláusula OVER (Transact-SQL).

order_by_clause
La cláusula ORDER BY determina la secuencia en la que se asigna a las filas su ROW_NUMBER dentro de una partición especificada. Es requerido. Para obtener más información, consulte la cláusula OVER (Transact-SQL).

Tipos de retorno

bigint

Observaciones generales

No hay garantía que las filas devueltas por una consulta usando ROW_NUMBER() se ordenarán exactamente igual con cada ejecución a menos que se cumplan las siguientes condiciones.

  1. Valores de la columna particionada son únicos.

  2. Los valores de las ORDER BY columnas son únicos.

  3. Las combinaciones de valores de la columna de partición y ORDER BY son únicas.

ROW_NUMBER() no es determinista. Para obtener más información, consulte Funciones deterministas y no deterministas.

Ejemplos

A. Ejemplos simples

La siguiente consulta devuelve las cuatro tablas del sistema en orden alfabético.

Aquí está el conjunto de resultados.

nombre recovery_model_desc
maestro SIMPLE
modelo COMPLETO
msdb SIMPLE
tempdb SIMPLE

Para agregar una columna de número de fila delante de cada fila, agregue una columna con la función ROW_NUMBER, en este caso llamada Row#. Debe mover la cláusula ORDER BY hasta la cláusula OVER.

Aquí está el conjunto de resultados.

Fila # nombre recovery_model_desc
1 maestro SIMPLE
2 modelo COMPLETO
3 msdb SIMPLE
4 tempdb SIMPLE

Añadiendo un PARTITION BY en la columna recovery_model_desc reiniciará la numeración cuando cambie el valor recovery_model_desc.

Aquí está el conjunto de resultados.

Fila # nombre recovery_model_desc
1 modelo COMPLETO
1 maestro SIMPLE
2 msdb SIMPLE
3 tempdb SIMPLE

B. Devolver el número de fila para los vendedores

El siguiente ejemplo calcula un número de fila para los vendedores en Adventure Works Cycles según su clasificación de ventas del año hasta la fecha.

Aquí está el conjunto de resultados .

C.Devolver un subconjunto de filas

El siguiente ejemplo calcula los números de fila para todas las filas de la tabla SalesOrderHeader en el orden de OrderDate y devuelve solo filas 50 a 60 inclusive.

D. Usando ROW_NUMBER () con PARTITION

El siguiente ejemplo usa el argumento PARTITION BY para particionar el resultado de la consulta establecido por la columna TerritoryName. La cláusula ORDER BY especificada en la cláusula OVER ordena las filas de cada partición por la columna SalesYTD. La cláusula ORDER BY de la instrucción SELECT ordena todo el conjunto de resultados de la consulta por TerritoryName.

Este es el conjunto de resultados.

Ejemplos: Azure Synapse Analytics y Parallel Data Warehouse

E. Devolver el número de fila para los vendedores

El siguiente ejemplo devuelve el ROW_NUMBER para los representantes de ventas según su cuota de ventas asignada.

Aquí hay un conjunto de resultados parciales.

F. Usando ROW_NUMBER () con PARTITION

El siguiente ejemplo muestra el uso de la función ROW_NUMBER con el argumento PARTITION BY. Esto hace que la función ROW_NUMBER numere las filas en cada partición.

Aquí hay un conjunto de resultados parcial.

Consulte también

RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *