2012-02-14 48 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

相關問題