Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wygenerować zakres liczb między dwiema liczbami?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .NET 4:Jak skonfigurować plik EDMX w innym asemblerze w Web.Config

  2. Jak działa funkcja CHAR() w SQL Server (T-SQL)

  3. Zmień nazwę tabeli w SQL Server (T-SQL)

  4. SQL Server:dynamiczna klauzula where

  5. Przykłady konwersji „smalldatetime” na „datetime” w SQL Server (T-SQL)