Pilih nilai yang tidak bertahan dengan VALUES
kata kunci. Kemudian gunakan JOIN
s untuk menghasilkan banyak dan banyak kombinasi (dapat diperluas untuk membuat ratusan ribu baris dan seterusnya).
Versi pendek dan cepat (tidak mudah dibaca):
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
Demo
Versi lebih verbose:
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
Demo
Kedua versi dapat dengan mudah diperpanjang dengan WHERE
klausa, membatasi output angka ke rentang yang ditentukan pengguna. Jika Anda ingin menggunakannya kembali, Anda dapat menentukan fungsi bernilai tabel untuknya.