GENERATE_SERIES (Transact-SQL)

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstancePunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Genera una serie de números dentro de un intervalo determinado. El usuario define el intervalo y el paso entre los valores de serie.

Nivel de compatibilidad 160

GENERATE_SERIES requiere que el nivel de compatibilidad sea al menos 160. Cuando el nivel de compatibilidad es inferior a 160, el motor de base de datos no puede encontrar la función GENERATE_SERIES.

Para cambiar el nivel de compatibilidad de una base de datos, vea Ver o cambiar el nivel de compatibilidad de una base de datos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

GENERATE_SERIES ( start , stop [ , step ] )

Argumentos

start

El primer valor del intervalo. start se especifica como una variable, un literal o una expresión escalar de tipo tinyint, smallint, int, bigint, decimal o numérico.

stop

El último valor del intervalo. stop se especifica como una variable, un literal o una expresión escalar de tipo tinyint, smallint, int, bigint, decimal o numérico. La serie se detiene una vez que el último valor de paso generado supera el valor stop.

El tipo de datos stopdebe coincidir con el tipo de datos de start.

[ step ]

Indica el número de valores que se van a incrementar o disminuir entre los pasos de la serie. step es una expresión de tipo tinyint, smallint, int, bigint, decimal o numérico. step puede ser negativo o positivo, pero no puede ser cero (0).

Este argumento es opcional. El valor predeterminado de step es 1 si start es menor que stop; de lo contrario, el valor predeterminado es -1 si start es mayor que stop.

Si start es menor que stop y se especifica un valor negativo para step, o si start es mayor que stop y se especifica un valor positivo para step, se devuelve un conjunto de resultados vacío.

Tipos de valores devueltos

Devuelve una tabla de una sola columna que contiene una secuencia de valores en la que cada valor difiere del anterior por step. El nombre de la columna es value. La salida es del mismo tipo que start y stop.

Permisos

No se requieren permisos para GENERATE_SERIES. Sin embargo, el usuario necesita el permiso EXECUTE en la base de datos y permiso para consultar los datos que se usan como entradas.

Ejemplos

En los ejemplos siguientes se describe la sintaxis para llamar a GENERATE_SERIES.

A Generación de una serie de valores enteros entre 1 y 10 en incrementos de 1 (valor predeterminado)

SELECT value
FROM GENERATE_SERIES(1, 10);

El conjunto de resultados es el siguiente:

value
-----------
1
2
3
4
5
6
7
8
9
10

B. Generación de una serie de valores enteros entre 1 y 50 en incrementos de 5

SELECT value
FROM GENERATE_SERIES(1, 50, 5);

El conjunto de resultados es el siguiente:

value
-----------
1
6
11
16
21
26
31
36
41
46

C. Generación de una serie de valores decimales entre 0,0 y 1,0 en incrementos de 0,1

DECLARE @start decimal(2, 1) = 0.0;
DECLARE @stop decimal(2, 1) = 1.0;
DECLARE @step decimal(2, 1) = 0.1;

SELECT value
FROM GENERATE_SERIES(@start, @stop, @step);

El conjunto de resultados es el siguiente:

value
---------------------------------------
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0