Monday, August 17, 2009

Create a tally table using a CTE

create table dbo.t_tally (
i int not null
,constraint pk_t_tally primary key clustered (i)
)

;with digits (i) as(
select 1 as i union all select 2 as i union all select 3 union all
select 4 union all select 5 union all select 6 union all select 7 union all
select 8 union all select 9 union all select 0)
,sequence(i) as (
select
d1.i
+ (10*d2.i)
+ (100*d3.i)
+ (1000*d4.i)
+ (10000*d5.i)
from digits as d1
,digits as d2
,digits as d3
,digits as d4
,digits as d5
)
insert into dbo.t_tally
select i
from sequence
where i < 65537
order by i

No comments:

Post a Comment