GENERATE_SERIES (Transact-SQL)

Gäller för: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

Genererar en serie tal inom ett visst intervall. Intervallet och steget mellan serievärden definieras av användaren.

Kompatibilitetsnivå 160

GENERATE_SERIES kräver att kompatibilitetsnivån är minst 160. När kompatibilitetsnivån är mindre än 160 kan databasmotorn inte hitta GENERATE_SERIES funktionen.

Om du vill ändra kompatibilitetsnivån för en databas läser du Visa eller ändra kompatibilitetsnivån för en databas.

Transact-SQL syntaxkonventioner

Syntax

GENERATE_SERIES ( start , stop [ , step ] )

Arguments

start

Det första värdet i intervallet. Start specificeras som en variabel, ett literal- eller skaläruttryck av typen tinyint, smallint, int, bigint, decimal eller numerisk.

Stanna

Det sista värdet i intervallet. stop specificeras som en variabel, ett literal, eller ett skalärt uttryck av typen tinyint, smallint, int, bigint, decimal eller numerisk. Serien slutar när det senast genererade stegvärdet överskrider stoppvärdet .

Datatypen för stoppmåste matcha datatypen för start.

[ steg ]

Anger antalet värden som ska öka eller minska mellan stegen i serien. step är ett uttryck av typen tinyint, smallint, int, bigint, decimal eller numerisk. Steg kan vara antingen negativt eller positivt, men kan inte vara noll (0).

Det här argumentet är valfritt. Standardvärdet för steg är 1 om start är mindre än stopp, annars är standardvärdet -1 om start är större än stopp.

Om start är mindre än stop och ett negativt värde anges för steg, eller om start är större än stop och ett positivt värde anges för steg, returneras en tom resultatmängd.

Returtyper

Returnerar en enkolumnstabell som innehåller en sekvens av värden där varje värde skiljer sig från föregående med steg. Namnet på kolumnen är value. Utgången är av samma typ som start och stopp.

Permissions

Inga behörigheter krävs för GENERATE_SERIES. Användaren behöver dock EXECUT-behörighet i databasen och behörighet att fråga all data som används som indata.

Examples

I följande exempel visas syntaxen för att anropa GENERATE_SERIES.

A. Generera en serie heltalsvärden mellan 1 och 10 i steg om 1 (standard)

SELECT value
FROM GENERATE_SERIES(1, 10);

Här är resultatet.

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

B. Generera en serie heltalsvärden mellan 1 och 50 i steg om 5

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

Här är resultatet.

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

C. Generera en serie decimalvärden mellan 0,0 och 1,0 i steg om 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);

Här är resultatet.

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