GENERATE_SERIES (Transact-SQL)

Se aplica a: Sql Server 2022 (16.x) Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse 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 de stop debe coincidir con el tipo de datos de inicio.

[ 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);

Este es el conjunto de resultados.

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);

Este es el conjunto de resultados.

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);

Este es el conjunto de resultados.

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