Välj icke-beständiga värden med VALUES nyckelord. Använd sedan JOIN s för att generera massor av kombinationer (kan utökas för att skapa hundratusentals rader och mer).
Kort och snabb version (inte så lätt att läsa):
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
Mer utfö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
Båda versionerna kan enkelt utökas med en WHERE sats som begränsar utmatningen av siffror till ett användarspecificerat intervall. Om du vill återanvända den kan du definiera en funktion med tabellvärde för den.