Megosztás a következőn keresztül:


GENERATE_SERIES (Transact-SQL)

Vonatkozik a következőkre: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

Számsorozatot hoz létre egy adott intervallumon belül. Az intervallumat és a sorozatértékek közötti lépést a felhasználó határozza meg.

Kompatibilitási szint 160

GENERATE_SERIES Kompatibilitási szint legalább 160 legyen. Ha a kompatibilitási szint alacsonyabb, mint 160, az adatbázis motor nem találja meg a GENERATE_SERIES függvényt.

Az adatbázisok kompatibilitási szintjének módosításához tekintse meg vagy módosítsa az adatbázis kompatibilitási szintjét.

Transact-SQL szintaxis konvenciók

Szemantika

GENERATE_SERIES ( start , stop [ , step ] )

Arguments

start

Az első érték az intervallumban. A start változóként, literálisként vagy skaláris kifejezésként van meghatározva, tinyint, smallint, int, bigint, tizedes vagy numerikus típusú.

állj

Az utolsó érték az intervallumban. A stop változóként, literális vagy skaláris kifejezésként van meghatározva, tinyint, smallint, int, bigint, tizedes vagy numerikus típusú. A sorozat akkor áll meg, amikor az utolsó generált lépésérték meghaladja a megállítást .

A stopadattípusának meg kell egyeznie a start adattípusával.

[ lépés ]

Jelzi, hogy a sorozat lépései között hány értéket lehet növelni vagy csökkenteni. A lépéstinyint, smallint, int, bigint, decimális vagy numerikustípusú kifejezés. A lépés lehet negatív vagy pozitív, de nem lehet nulla (0).

Ez az argumentum nem kötelező. A lépés alapértelmezett értéke 1, ha a start kisebb, mint a megállítás, egyébként az alapértelmezett érték -1, ha a start nagyobb, mint a megállítás.

Ha a start kisebb, mint a megállás , és a lépéshez negatív értéket jelölünk meg, vagy ha a start nagyobb, mint a stop , és pozitív értéket jelölünk meg a lépésnek, akkor üres eredményhalmazt adnak vissza.

Visszatérési típusok

Egy egyoszlopos táblázatot ad vissza, amely olyan értéksorozatot tartalmaz, amelyek mindegyike lépések szerint eltér az előzőtől. Az oszlop neve .value A kimenet ugyanaz a típus, mint a start és stop (start) és a leállítás.

Permissions

Ehhez nem szükséges GENERATE_SERIESengedély. Azonban a felhasználónak EXECUTE engedélyre van szüksége az adatbázison, valamint engedélyre bármilyen adat lekérdezéséhez, amelyet bemenetként használnak.

Példák

Az alábbi példák a hívás GENERATE_SERIESszintaxisát mutatják be.

A. Generálj egy egész értéksorozatot 1 és 10 között 1 lépésekben (alapértelmezett)

SELECT value
FROM GENERATE_SERIES(1, 10);

Itt van az eredmények összessége.

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

B. Generáljunk egy egész szám sor értéket 1 és 50 között 5-ös lépésekben

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

Itt van az eredmények összessége.

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

C. Generáljunk egy tizedes értéksorozatot 0,0 és 1,0 között 0,1-es lépésekben

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

Itt van az eredmények összessége.

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