2016-11-22 49 views
1

我在同一个SQL服务器上有数百个数据库(SQL2012),它们都具有相同的基本结构,我试图获得我们数据库的'联系人'的平均数量。TSQL-平均来自sp_MSforeachdb的结果

我可以运行一个sp_MSforeachdb查询,它显示联系人表中有多少联系人的列表,但是我需要对结果进行平均。任何指导如何做到这一点。

这是查询到目前为止我有:

exec sp_MSforeachdb 
'use ? 
IF DB_NAME() NOT IN ("model","tempdb","master","msdb") 
select count (CONTACTID) as TotalContacts from contact_tbl ' 

我欣赏它的可能相当基本的东西,但我是新来的,我GOOGLE了屁滚尿流,并尝试了很多来自这里和其他地方的不同建议并不愉快。

任何帮助,将不胜感激。

+1

将计数插入到表中,然后您可以执行任何您喜欢的操作? –

+0

非常感谢,谢谢 - – KEW

回答

1

您需要临时表。将Sp_msforeachdb程序结果插入一个临时表并找到平均值

IF Object_id('tempdb..#avg') IS NOT NULL 
    DROP TABLE #avg 

CREATE TABLE #avg(cnt INT) 

INSERT INTO #avg(cnt) 
EXEC Sp_msforeachdb 
    'use ? 
    IF DB_NAME() NOT IN ("model","tempdb","master","msdb") 
    select count (CONTACTID) as TotalContacts from contact_tbl ' 

SELECT Avg(cnt) 
FROM #test 
+0

谢谢Prdp - TSQL仍然是新的基础,但这似乎很基本(如怀疑) - 婴儿的步骤。 – KEW