0

我需要從不同數據庫提取數據到一個表中。這些DB都在相同的服務器和實例中,並且它們具有相同的結構。其中一列是數據庫名稱,其他列表來自同一張表。使用臨時表合併來自不同數據庫的查詢結果

我可以寫一個查詢,提取這些數據與每個數據庫的表,但我想合併所有結果到一個表。

我試圖使用臨時表來保存單個結果,但結果是一個空表。似乎在每個查詢之後,表#tmpTable被清空。我在這裏發佈我的嘗試:

CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX), [Example] VARCHAR(MAX)) 

EXECUTE sp_MSForEachDB 
    'USE ?;  
    DECLARE @ExampleQuery AS NVARCHAR(MAX) = 
      ''SELECT DB_NAME() AS [DbName], [Example] 
       INTO #tmpTable 
       FROM [tConfig]'' 
    EXEC sp_executesql @ExampleQuery;' 

SELECT * FROM #tmpTable 

DROP TABLE #tmpTable 

的實際查詢更復雜,它的使用PIVOT和其他命令,但我認爲這個例子是不夠的,如果有人知道如何得到想要的結果。

+0

如果您的問題是#TempTable被清空,## TempTable也不起作用? –

+0

@Stephen我試過了,但它給了我這個錯誤:''在數據庫中已經有一個名爲'## tmpTable'的對象。' –

+0

因爲你首先創建了#temptable,所以你需要'INSERT INTO#TempTable' 'SELECT'語句。 –

回答

1
CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX)) 

EXECUTE sp_MSForEachDB 
    'USE ?;  
    DECLARE @ExampleQuery AS NVARCHAR(MAX) = 
      ''INSERT INTO #tmpTable SELECT DB_NAME() AS [DbName] '' 
    EXEC sp_executesql @ExampleQuery;' 

SELECT * FROM #tmpTable 
DROP TABLE #tmpTable 
相關問題