2012-02-14 46 views
1

我停留在查询上以根据以下条件生成具有值的临时表。根据列值从现有表生成新的临时表

我有一个表如下(表1)

ID 
1 
5 
9 
3 
10 

我想根据ID列的值设置一个新的记录,就像如果我有ID=1,我需要1行,如果ID=5我需要五行等在临时表中,所以出来把桌子看起来像:

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

等..

我采用t Wo循环来实现这一点,一个循环是通过ID和内循环通过ID值,但我相信必须有一个更简单的方法来做到这一点。

+0

它的SQL Server 2008中 – Vikram 2012-02-14 07:20:43

+0

@Vikram - 您好,我已经更新了我的答案只是再次运行它......我增加了一个varaiable insertdata其解决您使用以前的查询问题....可以直接运行, infom它的工作与否 – 2012-02-14 08:04:08

回答

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 
+0

感谢它的伟大工程! – Vikram 2012-02-14 08:17:17

+0

这真的很好! +1 – shenhengbin 2012-02-14 08:31:38

相关问题