TSQL - усреднение результата из sp_MSforeachdb

У меня есть сотни баз данных на одном и том же сервере SQL (SQL2012), все они имеют одинаковую базовую структуру, и я пытаюсь получить среднее количество контактов в наших базах данных.

Я могу выполнить запрос sp_MSforeachdb, который представляет список количества контактов в таблице контактов, но мне нужно затем усреднить результат. Любое руководство по этому вопросу.

Это запрос, который я получил до сих пор:

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

Я ценю, что это, вероятно, довольно простой материал, но я здесь новичок, и я погуглил дерьмо из этого и попробовал много разных предложений здесь и в других местах без радости.

Любая помощь будет оценена.

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 
Другие вопросы по тегам