VALUES
で永続化されていない値を選択します キーワード。次に、JOIN
を使用します sたくさんの組み合わせを生成します(拡張して数十万行以上を作成できます)。
短くて速いバージョン(読みにくい):
WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1
デモ
より詳細なバージョン:
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1
デモ
どちらのバージョンもWHERE
で簡単に拡張できます 句、数値の出力をユーザー指定の範囲に制限します。再利用したい場合は、テーブル値関数を定義できます。