Wybierz nietrwałe wartości za pomocą VALUES
słowo kluczowe. Następnie użyj JOIN
s do generowania wielu, wielu kombinacji (może być rozszerzony do tworzenia setek tysięcy wierszy i nie tylko).
Krótka i szybka wersja (niełatwa do odczytania):
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
Bardziej szczegółowa wersja:
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
Obie wersje można łatwo rozszerzyć za pomocą WHERE
klauzula ograniczająca wyprowadzanie liczb do zakresu określonego przez użytkownika. Jeśli chcesz go ponownie użyć, możesz zdefiniować dla niego funkcję o wartościach w tabeli.