2016-11-22 6 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手順の結果を1つのテンポラリテーブルに挿入して平均を見つける

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