Недавно я сделал что-то подобное - вот мои заметки ... набор результатов показывает различия в значениях плюс строки, которые присутствуют в одной таблице, но не в другой.
Шаг 1: создание временных таблиц, содержащих строки, которые вы хотите сравнить.
Шаг 2: Выполните FULL OUTER JOIN для временных таблиц, используя неагрегированные столбцы в качестве критерия соответствия.
DECLARE @Ta TABLE (PubA varchar(255), CampA varchar(255), RevA money)
INSERT INTO @Ta (PubA, CampA, RevA)
SELECT Publisher, [Campaign Name], SUM([Revenue USD])
FROM D1.dbo.Stats
GROUP BY Publisher, [Campaign Name]
DECLARE @Tb TABLE (PubB varchar(255), CampB varchar(255), RevB money)
INSERT INTO @Tb (PubB, CampB, RevB)
SELECT Publisher, [Campaign Name], SUM([Revenue USD])
FROM D2.dbo.Stats
GROUP BY Publisher, [Campaign Name]
SELECT PubA, CampA, RevA, PubB, CampB, RevB, RevA-RevB DiffRev
FROM @Ta
FULL OUTER JOIN @Tb
ON PubA=PubB and CampA=CampB
ORDER BY DiffRev DESC
GO