Partager via


GENERATE_SERIES (Transact-SQL)

S’applique à : point de terminaison d’analyse SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL dans Microsoft Fabric Warehouse

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 l’arrêt doit correspondre au type de données pour le démarrage.

[ 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