Monday, 6 January 2014

TSQL - Generating a number sequence

Handy recursive method to generate a table with a 1-n number sequence

DECLARE @numbers TABLE(
  
num INT);
WITH Nbrs_3( n ) AS ( SELECT 1 UNION SELECT 0 ),
          
Nbrs_2( n ) AS ( SELECT 1 FROM Nbrs_3 n1 CROSS JOIN Nbrs_3 n2 ),
          
Nbrs_1( n ) AS ( SELECT 1 FROM Nbrs_2 n1 CROSS JOIN Nbrs_2 n2 ),
          
Nbrs_0( n ) AS ( SELECT 1 FROM Nbrs_1 n1 CROSS JOIN Nbrs_1 n2 ),
          
Nbrs  ( n ) AS ( SELECT 1 FROM Nbrs_0 n1 CROSS JOIN Nbrs_0 n2 )
      
INSERT INTO  @numbers (num)
      
SELECT n
          
FROM ( SELECT ROW_NUMBER() OVER (ORDER BY n)
                    
FROM Nbrs ) D ( n )
        
WHERE n <= @yourNumberHere

No comments: