我相信会有比这更干净的代码,但这应该可以工作。
#FinalResult
)然后可以将其连接到另一个表(基于
ID
)以获得最终结果。
注:
AdventureWorksDW2012
形成我的
SELECT COUNT
查询。
CREATE TABLE #test
(
Query VARCHAR(MAX) ,
ID INT ,
Name VARCHAR(100)
);
INSERT INTO #test ( Query ,
ID ,
Name
)
VALUES ( 'select count(*) FROM dbo.DimAccount' , -- Query - varchar(max)
1 , -- ID - int
'Server01 Logins' -- Name - varchar(100)
) ,
( 'select count(*) FROM dbo.DimCustomer' , -- Query - varchar(max)
2 , -- ID - int
'Server08 Logins' -- Name - varchar(100)
) ,
( 'select count(*) FROM dbo.DimEmployee' , -- Query - varchar(max)
3 , -- ID - int
'Server09 Logins' -- Name - varchar(100)
);
CREATE TABLE #Result
(
QueryResult INT --(assuming its only count)
--,ID INT
);
CREATE TABLE #FinalResult
(
QueryResult INT --(assuming its only count)
,ID INT
);
DECLARE @Sql NVARCHAR(MAX);
DECLARE @ID INT
DECLARE @Count INT
DECLARE ResultCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT Query, ID
FROM #test;
OPEN ResultCursor;
FETCH NEXT FROM ResultCursor
INTO @Sql, @id;
WHILE ( @@FETCH_STATUS = 0 )
BEGIN
INSERT INTO #Result
EXEC sp_executesql @Sql
FETCH NEXT FROM ResultCursor
INTO @Sql, @Id;
INSERT INTO #FinalResult ( QueryResult ,
ID
)
SELECT QueryResult, @id FROM #Result
DELETE FROM #result
END;
CLOSE ResultCursor;
DEALLOCATE ResultCursor;
SELECT *
FROM #FinalResult;
DROP TABLE #test;
DROP TABLE #Result;
DROP TABLE #FinalResult;