GENERATE_SERIES (Transact-SQL)

Gilt für:SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceSQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Generiert eine Reihe von Zahlen innerhalb eines bestimmten Intervalls. Das Intervall und der Schritt zwischen Datenreihenwerten werden vom Benutzer definiert.

Kompatibilitätsgrad 160

Für GENERATE_SERIES ist mindestens der Kompatibilitätsgrad 160 erforderlich. Bei einem Kompatibilitätsgrad von unter 160 kann die Datenbank-Engine die Funktion GENERATE_SERIES nicht finden.

Informationen zum Ändern des Kompatibilitätsgrads einer Datenbank finden Sie unter Anzeigen oder Ändern des Kompatibilitätsgrads einer Datenbank.

Transact-SQL-Syntaxkonventionen

Syntax

GENERATE_SERIES ( start , stop [ , step ] )

Argumente

start

Der erste Wert im Intervall. start wird als Variablen-, Literal- oder Skalar-Ausdruck des Typs tinyint, smallint, int, bigint, decimal oder numeric angegeben.

stop

Der letzte Wert im Intervall. stop wird als Variablen-, Literal- oder Skalar-Ausdruck des Typs tinyint, smallint, int, bigint, decimal oder numeric angegeben. Die Datenreihe wird beendet, sobald der letzte generierte Schrittwert den Wert stop überschreitet.

Der Datentyp für stopmuss mit dem Datentyp für start übereinstimmen.

[ step ]

Gibt die Anzahl der Werte an, um die zwischen den Schritten in der Datenreihe inkrementiert oder dekrementiert werden soll. step ist ein Ausdruck vom Typ tinyint, smallint, int, bigint, decimal oder numeric. step kann entweder negativ oder positiv, aber nicht null (0) sein.

Dieses Argument ist optional. Der Standardwert für step ist 1, wenn start kleiner als stop ist, andernfalls ist der Standardwert -1, wenn start größer als stop ist.

Wenn start kleiner als stop ist und ein negativer Wert für step angegeben wird, oder wenn start größer als stop ist und ein positiver Wert für step angegeben wird, wird ein leeres Resultset zurückgegeben.

Rückgabetypen

Gibt eine einspaltige Tabelle zurück, die eine Folge von Werten enthält, wobei sich jeder Wert vom vorhergehenden um den Wert von step unterscheidet. Der Name der Spalte lautet value. Die Ausgabe ist vom selben Typ wie start und stop.

Berechtigungen

Es sind keine Berechtigungen für GENERATE_SERIES erforderlich. Der Benutzer benötigt jedoch EXECUTE-Berechtigungen (Ausführen) für die Datenbank und Berechtigungen zum Abfragen aller Daten, die als Eingaben verwendet werden.

Beispiele

Die folgenden Beispiele veranschaulichen die Syntax zum Aufrufen von GENERATE_SERIES.

A. Generieren einer Reihe ganzzahliger Werte zwischen 1 und 10 in Inkrementen von 1 (Standard)

SELECT value
FROM GENERATE_SERIES(1, 10);

Hier ist das Resultset.

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

B. Generieren einer Reihe ganzzahliger Werte zwischen 1 und 50 in Inkrementen von 5 (Standard)

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

Hier ist das Resultset.

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

C. Generieren einer Reihe von Dezimalwerten zwischen 0,0 und 1,0 in Inkrementen von 0,1 (Standard)

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);

Hier ist das Resultset.

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