Соединение Мастер таблицы и двух таблиц фактов - PullRequest
0 голосов
/ 23 мая 2018

Я столкнулся с проблемой при объединении данных.у меня есть следующие таблицы:

Table1

ID  AMT Product
1   10   P1
2   20   P1
3   30   P2
4   40   P2
5   10   P3

Table2

ID1  AMT1
1   10
1   20
1   30
2   20
3   10

Table3

ID3 AMT3
1   20
1   40
2   50
5   20

Таблица 1 является таблицей mater, а таблица 2 и3 таблицы фактов.После объединения главной таблицы и таблицы фактов, используя приведенный ниже запрос, я получил положенный Результат см. Вложение.я использовал следующий запрос для объединения таблиц.

SELECT * 
FROM [dbo].[Table_1] a 
left join [dbo].[Table_2] b on a.ID=b.ID1 
Left Join [dbo].[Table_3] c on b.ID1=c.ID2

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

Product Amt1
P1       80
P2       10

Могут ли некоторыеодин руководство мне, как это сделать.

Спасибо

Revathi

1 Ответ

0 голосов
/ 23 мая 2018

После некоторого обсуждения и другого взгляда на данные, я понимаю, что вы ищете и в чем проблема.Значения AMT1 и AMT2 будут продублированы, если их будет несколько уникальных комбинаций.Приведенное ниже решение может быть не самым эффективным, но оно использует UNION для выполнения каждого из соединений в отдельности, с нулевым значением для AMT, не включенным в эту часть запроса:

SELECT z.Product, SUM(z.AMT1), SUM(z.AMT2) 
FROM (
    SELECT a.Product, b.AMT1, NULL as 'AMT2'
    FROM [dbo].[Table_1] a 
    left join [dbo].[Table_2] b on a.ID=b.ID1
UNION ALL
    SELECT a.Product, NULL as 'AMT1', b.AMT2
    FROM [dbo].[Table_1] a 
    left join [dbo].[Table_3] b on a.ID=b.ID2
) as 'z' 
GROUP BY z.Product;

ПРИМЕЧАНИЕ. Это также устраняет проблему в логике соединения.Обе таблицы из двух столбцов должны быть объединены на основе таблицы, включающей Product, поскольку вы группируете по полям Product, а не объединяете Table_2 и Table_3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...