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