根据列值从现有表生成新临时表

时间:2012-02-14 07:03:31

标签: sql sql-server database loops

我遇到了一个查询,要根据以下条件生成一个具有值的临时表。

我有一张表格如下(表1)

ID
1
5
9
3
10

我希望根据ID列值设置新记录集,如果我有ID=1,我需要1行,如果ID=5我需要5行,依此类推临时表,因此输出表看起来像:

ID    Val
1     Null
5     Null
5     Null
5     Null
5     Null
5     Null

依旧......

我使用两个循环来实现这一点,一个循环通过ID和内循环通过ID值,但我相信必须有一个更简单的方法来执行此操作。

1 个答案:

答案 0 :(得分:4)

您可以使用数字表格。这里我使用最高值为2047的spt_values。如果这还不够,你应该创建一个自己的数字表。

declare @T table(ID int)

insert into @T values (1),(5),(9),(3),(10)

select T.ID
from @T as T
  inner join master..spt_values as N
    on N.number between 1 and T.ID
where N.type = 'P'    
order by T.ID