2013-10-15 86 views
0

在SQL Server 2005中,我有一個臨時表#表1從基於本月日動態透視保存數據。該表根據月份/年份將有28,29,30或31列。 我那麼想創建另一個臨時表,表2#與靜態31列(以增加對報表格式的一些數據)和表1#追加到它在額外的列空。插入其中列數是不同的

我想:

Select * into #Table2 from #Table1 

但這不起作用,它告訴我,表2#已經存在於數據庫中。我知道它,我把它放在那裏!

或者,有沒有辦法來添加列29,30和31 #Table 1,如果我跑樞軸在二月 或31,如果我運行它在六月/月?

我希望這解釋了我的困境,並有一個簡單的解決方案。我不太聰明!

+1

爲什麼不只是做31列的靜態支點創建表1,如果有這些額外的列是可以接受的?此外,您不能使用'SELECT ... INTO'現有表['INTO'條款(http://technet.microsoft.com/en-us/library/ms188029.aspx):「創建一個* *新**表「(我強調)。您需要使用「INSERT ... SELECT」插入到現有的表中。 –

回答

1

您可以添加29,30和31列的名稱,就像在數據透視聲明其他日期,如:

SELECT 1,2,...,28,29,30,31 
FROM table 
PIVOT(SUM(aggregate column) FOR spreading column IN(1,2,...,28,29,30,31)) AS P; 

,然後爲它創建一個新表時,不應使用Select * into條款。您應該使用以下子句:

insert into #Table2 
select * from #Table1 

希望這有助於!

0

嗨在創建臨時表#table1和#table2之前試試這段代碼你應該檢查表是否存在如果存在,那麼試着刪除它並根據你的邏輯創建最終執行後你應該再次從temp中刪除這兩個表D B。希望這段代碼會有幫助。 enter image description here

+0

發佈代碼的圖像是分享一個非常不友好的方式 - 尤其是因爲SO具有良好的代碼標記設施。如果突出顯示一段代碼並點擊「{}」按鈕,它應該在答案中打開語法高亮(檢查預覽)。這也意味着其他人可以從你的答案中複製和粘貼。 –

+0

我的不好。我的查詢具有相同的發佈問題,這就是爲什麼我使用圖像。否則我總是回覆查詢片段。謝謝。 –

相關問題