簡體   English   中英

將多個查詢結果導出到單個Excel文件

[英]Export Multiple Query Results to Single Excel File

我在SSMS中運行了一個sp,它從50多個具有完全相同結構的數據庫中收集信息。 我正在提取諸如CustomerName,NumberOfUsers和VersionofCode之類的結果。 執行該過程時,我得到50多個不同的結果集,所有結果集都選擇了相同的列。 我不想將這些結果導出50多次並將其放到一個excel表中,而是想將所有結果導出到1個excel文件中。

這可能嗎? 我將不得不考慮這樣做,因為我的列名與我查詢的每個數據庫都匹配。

任何幫助表示贊賞!

解決此問題的方法可能有很多。 我將通過嘗試將存儲過程調用中的許多結果集合並到單個結果集中,然后執行您想要執行的任何輸出導出(以實現卓越效果)來解決該問題。

最簡單的方法是使用臨時表來累積每個存儲的proc調用的結果。 您可以使用“ INSERT #temptable EXEC mystoredproc @ param1”語法來存儲存儲過程的結果。

這是我舉個例子:

-- *** Create a sample stored proc that returns one result set ***
CREATE PROC spGetCompanyEmployees @pCompanyID AS INT
AS
BEGIN
    SELECT Company.CompanyName
        , Department.DepartmentName 
        , Employee.EmployeeName
    FROM Company 
        LEFT JOIN Department ON Department.CompanyID = Company.CompanyID
        LEFT JOIN Employee ON Employee.DepartmentID = Department.DepartmentID
    WHERE Company.CompanyID = @pCompanyID
END
GO


-- *** Demonstrate how to call that stored proc multiple times, 
-- *** accumulating the results in a temp table and selecting
-- *** the combined results at the end.

CREATE TABLE #ttbl
(
    CompanyName NVARCHAR(60)
    , DepartmentName NVARCHAR(60)
    , EmployeeName NVARCHAR(60)
)

INSERT  #ttbl
  EXEC spGetCompanyEmployees 1

INSERT  #ttbl
  EXEC spGetCompanyEmployees 2

SELECT * FROM #ttbl

該最終SELECT的結果輸出將是來自兩個存儲過程調用的組合的單個結果集。

我希望這有幫助。

我將使用臨時表的建議與此博客文章中的示例結合使用,該示例使用sys.sp_msforeachdb遍歷數據庫,結果如下:

Create TABLE #temp
(
    DbName NVARCHAR(50),
    TableName NVARCHAR(50)
)

INSERT #temp

EXEC
    sys.sp_msforeachdb 
    'SELECT ''?'' DatabaseName, Name FROM [?].sys.Tables WHERE Name LIKE ''%sometablename%'''

Select * from #temp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM