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
.
R : 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.
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.
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.
value
---------------------------------------
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0