• A CTE could also be used to generate a tally table in memory. This can come in handy if you don't have access to create a table or wish to create a table for short-term use.

    WITH Tally

    AS

    (

    SELECT

    TOP 20000

    ROW_NUMBER() OVER (ORDER BY SC1.name) AS N

    FROM

    master.dbo.syscolumns AS SC1

    CROSS JOIN master.dbo.syscolumns AS SC2

    )