SQL中的Tally表

时间:2014-09-25 20:52:25

标签: sql sql-server-2008 tsql

我想用SQL(sql2008)中的Tally表创建一堆数据,肯定需要帮助。

首先,我有这个包含2列的表。

{
  AcctNum  (nchar(30), null),
  DataInfo (nchar(745), null)
}

虽然我不关心DataInfo列中的数据,但我确实想在表中添加大约10k的行,每行都有唯一的AcctNum。

问题是我需要在两列中保持数据的长度。例如,AcctNum列看起来像" 400000000000001"。如何在保留"空格"?

的同时增加数字

不确定我在这里是否有道理,但请告诉我,我会尝试解释更多,谢谢!

1 个答案:

答案 0 :(得分:2)

使用递归公用表表达式:

-- set up a table variable for demo purpose

declare @t table (AcctNum nchar(30) null, DataInfo nchar(745) null);
-- insert the starting value
insert @t values ('400000000000001', null);

-- run the cte to generate the sequence
with cte (acctnum, num) as (
    select acctnum, cast(acctnum as bigint) + 1 num  -- starting value
    from @t
    union all
    select acctnum, num+1 from cte
    where num < cast(acctnum as bigint) + 10000      -- stopping value
    )

-- insert data sequence into the table
insert @t (AcctNum, DataInfo)
select num, null from cte
option (maxrecursion 10000);

select * from @t;

表变量 @t 现在将包含acctnum 400000000000001 - &gt; 400000000010001作为连续序列。