sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan genererer man en række tal mellem to tal?

Vælg ikke-vedvarende værdier med VALUES søgeord. Brug derefter JOIN s for at generere masser og masser af kombinationer (kan udvides til at skabe hundredtusindvis af rækker og mere).

Kort og hurtig version (ikke så let at læse):

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

Mere udfø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

Begge versioner kan nemt udvides med en WHERE klausul, der begrænser output af tal til et brugerspecificeret område. Hvis du ønsker at genbruge det, kan du definere en funktion med tabelværdi for det.



  1. Opdater erklæring med indre joinforbindelse på Oracle

  2. Hvad er et skema i SQL, og hvordan opretter man det?

  3. Find forbindelserne mellem databasemailkonti og databaseprincipper i SQL Server (T-SQL)

  4. Hvordan PERIOD_ADD() virker i MariaDB