GENERATE_SERIES (Transact-SQL)

適用対象:SQL Server 2022 (16.x)Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

指定したサイクル間隔内に一連の数値を生成します。 サイクル間隔と系列値間のステップは、ユーザーによって定義されます。

互換性レベル 160

GENERATE_SERIES は、互換性レベル 160 以上にする必要があります。 互換性レベルが 160 未満の場合、データベースエンジンは GENERATE_SERIES 関数を見つけることができません。

データベースの互換性レベルを変更するには、「データベースの互換性レベルの表示または変更」を参照してください。

Transact-SQL 構文表記規則

構文

GENERATE_SERIES ( start , stop [ , step ] )

引数

start

間隔の最初の値。 start は、tinyintsmallintintbigintdecimal、または numeric 型の変数、リテラル、またはスカラーとして指定します。

stop

間隔の最後の値。 stop は、tinyintsmallintintbigintdecimal、または numeric 型の変数、リテラル、またはスカラーとして指定します。 最後に生成されたステップ値が stop 値を超えると、系列は停止します。

stop のデータ型は start のデータ型と一致する "必要があります"。

step

系列内のステップ間でインクリメントまたはデクリメントする値の数を示します。 step は、tinyintsmallintintbigintdecimal、または numeric 型のです。 step は負でも正でもかまいませんが、ゼロ (0) にすることはできません。

この引数は省略可能です。 startstop 未満の場合、step の既定値は 1 です。そうではなく startstop より大きい場合、既定値は -1 です。

startstop 未満で、step に負の値を指定した場合、または startstop より大きく、step に正の値を指定した場合は、空の結果セットが返されます。

戻り値の型

一連の値を含んだ 1 列のテーブルを返します。それぞれの値は前の値と step だけ差があります。 列の名前は value です。 出力は startstop と同じ型です。

アクセス許可

GENERATE_SERIES にアクセス許可は必要ありません。 ただし、ユーザーは、データベースに対する EXECUTE アクセス許可と、入力として使用される任意のデータをクエリするためのアクセス許可が必要です。

次の例は、GENERATE_SERIES を呼び出す構文を示しています。

A. 1 から 10 までの一連の整数値を 1 (既定値) ずつ増加させて生成します

SELECT value
FROM GENERATE_SERIES(1, 10);

結果セットは次のようになります。

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

B. 1 から 50 までの一連の整数値を 5 ずつ生成します

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

結果セットは次のようになります。

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

C: 0.0 から 1.0 までの一連の 10 進値を 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);

結果セットは次のようになります。

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