Submitted byCategory
Review Cycle
.
Public
Joachim Mutter/sysarc
on 11/14/2008 at 11:14 AM
SQL\Code

Creating Sequence Numbers

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