01 avril 2020

SQL - générer des nombres

Parfois, on a besoin en SQL de remonter une liste de nombre pour combiner avec des tables ou pour démultiplier un résultat.

J'ai trouvé ce code de @slartidan sur service Stack : https://stackoverflow.com/questions/21425546/how-to-generate-a-range-of-numbers-between-two-numbers

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)
WHERE ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n BETWEEN @userinput1 AND @userinput2
ORDER BY 1

Le code est simple et permet d'avoir une table avec une colonne contenant les entiers entre @userinput1 et @userinput2.
C'est simple clair, facile a écrire facile à adapter, élégant.

Rien à dire de plus !