GENERATE_SERIES (Transact-SQL)

S’applique à :SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstancePoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Génère une série de nombres dans un intervalle donné. L’intervalle et l’étape entre les valeurs de série sont définis par l’utilisateur.

Niveau de compatibilité 160

GENERATE_SERIES nécessite que le niveau de compatibilité soit au moins 160. Lorsque le niveau de compatibilité est inférieur à 160, le moteur de base de données ne peut pas trouver la fonction GENERATE_SERIES.

Pour changer le niveau de compatibilité d’une base de données, consultez Afficher ou changer le niveau de compatibilité d’une base de données.

Conventions de la syntaxe Transact-SQL

Syntaxe

GENERATE_SERIES ( start , stop [ , step ] )

Arguments

start

La première valeur dans l’intervalle. démarrer est spécifiée sous la forme d’une variable, d’un littéral ou d’uneexpression scalaire de type tinyint, smallint, int, bigint, décimale ou numérique.

stop

La dernière valeur dans l’intervalle. arrêter est spécifiée sous la forme d’une variable, d’un littéral ou d’uneexpression scalaire de type tinyint, smallint, int, bigint, décimale ou numérique. La série s’arrête une fois que la dernière valeur d’étape générée dépasse la valeur arrêter.

Le type de données pour arrêterdoit correspondre au type de données pour démarrer.

[ step ]

Indique le nombre de valeurs à incrémenter ou décrémenter entre les étapes de la série. étape est une expression de type tinyint, smallint, int, bigint, décimale ounumérique. étape peut être négatif ou positif, mais ne peut pas être zéro (0).

Cet argument est facultatif. La valeur par défaut de étape est 1 si démarrer est inférieure à arrêter, sinon, la valeur par défaut est -1 si démarrer est supérieure à arrêter.

Si démarrer est inférieure à arrêter et qu’une valeur négative est spécifiée pour étape ou si démarrer est supérieure à arrêter et qu’une valeur positive est spécifiée pour étape, un jeu de résultats vide est retourné.

Types de retour

Renvoie une table à une seule colonne contenant une séquence de valeurs dans laquelle chacun diffère du précédent par étape. Le nom de la colonne est value. Le résultat est le même type que démarrer et arrêter.

Autorisations

Aucune autorisation n’est requise pour GENERATE_SERIES. Cependant, l’utilisateur doit avoir l’autorisation EXECUTE sur la base de données, ainsi que l’autorisation d’effectuer des requêtes sur les données utilisées comme entrées.

Exemples

Les exemples suivants illustrent la syntaxe à utiliser pour appeler GENERATE_SERIES.

A. Générer une série de valeurs entières comprises entre 1 et 10 en incréments de 1 (valeur par défaut)

SELECT value
FROM GENERATE_SERIES(1, 10);

Voici le jeu de résultats obtenu.

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

B. Générer une série de valeurs entières comprises entre 1 et 50 en incréments de 5

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

Voici le jeu de résultats obtenu.

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

C. Générer une série de valeurs décimales comprises entre 0,0 et 1,0 en incréments 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);

Voici le jeu de résultats obtenu.

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