I found this very interesting peace of code in the article "Writing Faster T-SQL" which was written by By Jacob Sebastian, 2008/03/31. It could be used in each situation, where you need a running sequence number from 1 to N, where N is the result of 2^1, 2^2, 2^4, 2^8, 2^16, ... and represnets one select statements in the CTE. If you need more numbers, append an additional Select statement. WITH L0 AS (SELECT 1 AS C UNION ALL SELECT 1), --2 rows L1 AS (SELECT 1 AS C FROM L0 AS A, L0 AS B),--4 rows L2 AS (SELECT 1 AS C FROM L1 AS A, L1 AS B),--16 rows L3 AS (SELECT 1 AS C FROM L2 AS A, L2 AS B),--256 rows L4 AS (SELECT 1 AS C FROM L3 AS A, L3 AS B),--65536 rows num AS (SELECT ROW_NUMBER() OVER(ORDER BY C) AS N FROM L4 ) SELECT N FROM num