Wählen Sie nicht persistente Werte mit VALUES
aus Stichwort. Verwenden Sie dann JOIN
s zum Generieren von vielen, vielen Kombinationen (kann erweitert werden, um Hunderttausende von Zeilen und mehr zu erstellen).
Kurze und schnelle Version (nicht so einfach zu lesen):
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
Ausführlichere 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
Beide Versionen können einfach mit einem WHERE
erweitert werden -Klausel, die die Ausgabe von Zahlen auf einen benutzerdefinierten Bereich beschränkt. Wenn Sie es wiederverwenden möchten, können Sie eine Tabellenwertfunktion dafür definieren.