GENERATE_SERIES (Transact-SQL)
適用対象: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance Microsoft Fabric のSQL 分析エンドポイント Microsoft Fabric のウェアハウス
指定したサイクル間隔内に一連の数値を生成します。 サイクル間隔と系列値間のステップは、ユーザーによって定義されます。
互換性レベル 160
GENERATE_SERIES
は、互換性レベル 160 以上にする必要があります。 互換性レベルが 160 未満の場合、データベースエンジンは GENERATE_SERIES
関数を見つけることができません。
データベースの互換性レベルを変更するには、「データベースの互換性レベルの表示または変更」を参照してください。
構文
GENERATE_SERIES ( start , stop [ , step ] )
引数
start
間隔の最初の値。 start は、tinyint、smallint、int、bigint、decimal、または numeric 型の変数、リテラル、またはスカラー式として指定します。
stop
間隔の最後の値。 stop は、tinyint、smallint、int、bigint、decimal、または numeric 型の変数、リテラル、またはスカラー式として指定します。 最後に生成されたステップ値が stop 値を超えると、系列は停止します。
ストップ mustのデータ型は、startのデータ型と一致します。
step
系列内のステップ間でインクリメントまたはデクリメントする値の数を示します。 step は、tinyint、smallint、int、bigint、decimal、または numeric 型の式です。 step は負でも正でもかまいませんが、ゼロ (0
) にすることはできません。
この引数は省略可能です。 start が stop 未満の場合、step の既定値は 1 です。そうではなく start が stop より大きい場合、既定値は -1 です。
start が stop 未満で、step に負の値を指定した場合、または start が stop より大きく、step に正の値を指定した場合は、空の結果セットが返されます。
戻り値の型
一連の値を含んだ 1 列のテーブルを返します。それぞれの値は前の値と step だけ差があります。 列の名前は value
です。 出力は start と stop と同じ型です。
アクセス許可
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