我遇到了一个查询,要根据以下条件生成一个具有值的临时表。
我有一张表格如下(表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
值,但我相信必须有一个更简单的方法来执行此操作。
答案 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