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.