У меня есть несколько запросов:Объединение нескольких наборов данных в одном запросе
1) select Year , Month, Sum(Stores) from ABC ;
2) select Year, Month , Sum(SalesStores) from DEF ;
3) slect Year, Month, Sum(Products) from FGH;
хочу результат, как:
Year, Month , Sum(Stores), Sum(SalesStores), Sum(Products)
Я попытался Полное внешнее соединение с запросом, который выглядит примерно так:
SELECT ISNULL(x.[Year], y.[Year]) AS [Year],
ISNULL(x.[Month], y.[Month]) AS [Month],
x.Sum_Stores,
y.Sum_SalesStores,
z.Sum_products
FROM (select Year , Month, Sum(Stores) AS Sum_Stores from ABC ... GROUP BY [Month]) AS x
FULL OUTER JOIN (select Year, Month , Sum(SalesStores) AS Sum_SalesStores from DEF ... GROUP BY [Month]) AS y
ON x.[Year] = y.[Year] AND x.[Month] = y.[Month]
FULL OUTER JOIN (select Year, Month , Sum(products) AS Sum_products from FGH ... GROUP BY [Month]) AS z
ON y.[Year] = z.[Year] AND y.[Month] = z.[Month]
Проблема заключается в том, что ABC имеет данные только на определенные месяцы, DEF имеет данные для разных месяцев и FGH снова содержит данные за разные месяцы.
Когда я запускаю свой запрос выше, я получаю много нулей и 0.
Может кто-нибудь исправить меня в отношении чего не так с запросом или сказать мне решение, которое работает для моего дела.
Ваш код не содержит 'UNION'. – dav1dsm1th
Спасибо за исправление его полного внешнего соединения – CodeNinja
'select Year, Month, Sum (SalesStores) из DEF' не должны выполняться.Вам не хватает GROUP BY? – usr