GENERATE_SERIES (Transact-SQL)

Si applica a: SQL Server 2022 (16.x) Preview

Genera una serie di numeri in un determinato intervallo. L'intervallo e il passaggio tra i valori di serie vengono definiti dall'utente.

Livello di compatibilità 160

GENERATE_SERIES richiede un livello di compatibilità minimo di 160. Se il livello di compatibilità è inferiore a 160, SQL Server non potrà individuare la funzione GENERATE_SERIES.

Per modificare il livello di compatibilità di un database, fare riferimento a Visualizzare o modificare il livello di compatibilità di un database.

Convenzioni della sintassi Transact-SQL

Sintassi

GENERATE_SERIES ( start, stop [, step ] )

Argomenti

start

Primo valore della matrice. L'argomento start viene specificato come variabile, valore letterale o espressione scalare di tipo tinyint, smallint, int, bigint, decimal o numeric.

stop

Ultimo valore della matrice. L'argomento stop viene specificato come variabile, valore letterale o espressione scalare di tipo tinyint, smallint, int, bigint, decimal o numeric. La serie viene arrestata quando l'ultimo valore di step generato supera quello di stop.

Il tipo di dati per l'argomento stopdeve corrispondere al tipo di dati per l'argomento start.

[ step ]

Indica il numero di valori da incrementare o decrementare tra gli step della serie. L'argomento step è un'espressione di tipo tinyint, smallint, int, bigint, decimal o numeric. Il valore di step può essere negativo o positivo, ma non zero (0).

L'argomento è facoltativo. Il valore predefinito per step è 1 quando il valore di start è minore del valore di stop e -1 quando il valore di start è maggiore del valore di stop.

Se il valore di start è minore del valore di stop e per l'argomento step è specificato un valore negativo oppure se il valore di start è maggiore del valore di stop e per l'argomento step è specificato un valore positivo, viene restituito un set di risultati vuoto.

Tipi restituiti

Restituisce una tabella con una singola colonna contenente una sequenza di valori in cui ciascun valore si differenzia dal precedente per il valore di step. La colonna è denominata value. L'output è dello stesso tipo degli argomenti start e stop.

Autorizzazioni

Non sono necessarie autorizzazioni per la funzione GENERATE_SERIES. Nondimeno, l'utente deve disporre dell'autorizzazione EXECUTE per il database e dell'autorizzazione per eseguire query su tutti i dati usati come input.

Esempio

Di seguito vengono forniti alcuni esempi di sintassi di chiamata della funzione GENERATE_SERIES.

R. Generare una serie di valori interi compresi tra 1 e 10 in incrementi di 1 (impostazione predefinita)

SELECT value
FROM GENERATE_SERIES(1, 10);

Di seguito è riportato il set di risultati.

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

B. Generare una serie di valori interi compresi tra 1 e 50 in incrementi di 5

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

Di seguito è riportato il set di risultati.

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

C. Generare una serie di valori interi compresi tra 0,0 e 1,0 in incrementi di 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);

Di seguito è riportato il set di risultati.

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

Vedi anche