Selecteer niet-permanente waarden met de VALUES
trefwoord. Gebruik dan JOIN
s om heel veel combinaties te genereren (kan worden uitgebreid om honderdduizenden rijen en meer te maken).
Korte en snelle versie (niet zo gemakkelijk te lezen):
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
Uitgebreidere versie:
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 versies zijn eenvoudig uit te breiden met een WHERE
clausule, waardoor de uitvoer van getallen wordt beperkt tot een door de gebruiker opgegeven bereik. Als u het opnieuw wilt gebruiken, kunt u er een functie met tabelwaarde voor definiëren.