Partilhar via


GENERATE_SERIES (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) Azure SQL Database AzureSQL ManagedInstance SQL Analytics endpoint em Microsoft FabricWarehouse em Microsoft FabricSQL database em Microsoft Fabric

Gera uma série de números dentro de um determinado intervalo. O intervalo e o passo entre os valores da série são definidos pelo utilizador.

Nível de compatibilidade 160

GENERATE_SERIES requer que o nível de compatibilidade seja pelo menos 160. Quando o nível de compatibilidade é inferior a 160, o Motor de Base de Dados não consegue encontrar a GENERATE_SERIES função.

Para alterar o nível de compatibilidade de um banco de dados, consulte Exibir ou alterar o nível de compatibilidade de um banco de dados.

Transact-SQL convenções de sintaxe

Sintaxe

GENERATE_SERIES ( start , stop [ , step ] )

Arguments

start

O primeiro valor no intervalo. start é especificado como uma variável, literal ou expressão escalar do tipo tinyint, smallint, int, bigint, decimal ou numérica.

Pára

O último valor do intervalo. O stop é especificado como uma variável, literal ou uma expressão escalar do tipo Tinyint, Smallint, Int, Bigint, Decimal ou Numérica. A série termina quando o último valor do passo gerado ultrapassa o valor de paragem .

O tipo de dados para a paradadeve corresponder ao tipo de dados para o início.

[ passo ]

Indica o número de valores a incrementar ou decrementar entre os passos da série. step é uma expressão do tipo tinyint, smallint, int, bigint, decimal ou numérico. O degrau pode ser negativo ou positivo, mas não pode ser zero (0).

Este argumento é opcional. O valor padrão para step é 1 se start for menor que stop; caso contrário, o valor por defeito é -1 se start for maior que stop.

Se start for menor que stop e for especificado um valor negativo para o passo, ou se o início for maior que o stop e for especificado um valor positivo para o passo, devolve-se um conjunto de resultados vazio.

Tipos de devolução

Devolve uma tabela de coluna única contendo uma sequência de valores em que cada um difere do anterior por passos. O nome da coluna é value. A saída é do mesmo tipo que start e stop.

Permissions

Não são necessárias permissões para GENERATE_SERIES. No entanto, o utilizador precisa de permissão EXECUTE na base de dados e permissão para consultar quaisquer dados usados como entradas.

Examples

Os exemplos a seguir demonstram a sintaxe para chamar GENERATE_SERIES.

A. Gerar uma série de valores inteiros entre 1 e 10 em incrementos de 1 (padrão)

SELECT value
FROM GENERATE_SERIES(1, 10);

Aqui está o conjunto de resultados.

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

B. Gerar uma série de valores inteiros entre 1 e 50 em incrementos de 5

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

Aqui está o conjunto de resultados.

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

C. Gerar uma série de valores decimais entre 0,0 e 1,0 em 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);

Aqui está o 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