数値を生成したいだけの場合。あなたはこれを行うことができます:
WITH Nbrs ( n ) AS (
SELECT 12 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n < 16 )
SELECT
n AS MISSING
FROM
Nbrs
アップデート
集計表を作成する方法はいくつかあります。最も一般的なケースは、ループを使用して数値を生成することです
この例は、再帰 CTE を使用して生成される集計テーブルを示しています。最初の部分:
SELECT 12 UNION ALL
集計表を開始するかどうかを定義します。2 番目の部分:
SELECT 1 + n FROM Nbrs WHERE n < 16 )
定義は集計表を終了することでした。を削除すると、WHERE n < 16
数値が永久に生成され続けます。または、maxrecursive エラーが発生します。2 番目の部分では、 で数値をどれだけ増やしたいかを定義しますSELECT 1 + n
。に変更する場合は、SELECT 2 + n
. 出力は次のようになります。
MISSING
12
14
16
ここで、集計テーブルを増やしてSELECT 1 + n
16 で停止するためです。出力は次のようになります。
MISSING
12
13
14
15
16
更新 2
それ以上の数が必要な場合は、300k. 次に、次のように設定できます。
OPTION ( MAXRECURSION 0 )
クエリのボタンで。たとえば、次のようになります。
WITH Nbrs ( n ) AS (
SELECT 12 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n < 1000000000 )
SELECT
n AS MISSING
FROM
Nbrs
OPTION ( MAXRECURSION 0 )
300k 以上を生成します。このエラーが導入されたため、終了しない再帰的な ctes を使用できないと思います。
参考文献: