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