После некоторого обсуждения и другого взгляда на данные, я понимаю, что вы ищете и в чем проблема.Значения 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