Vælg ikke-vedvarende værdier med VALUES
søgeord. Brug derefter JOIN
s for at generere masser og masser af kombinationer (kan udvides til at skabe hundredtusindvis af rækker og mere).
Kort og hurtig version (ikke så let at læse):
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
Mere udførlig version:
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
Begge versioner kan nemt udvides med en WHERE
klausul, der begrænser output af tal til et brugerspecificeret område. Hvis du ønsker at genbruge det, kan du definere en funktion med tabelværdi for det.