У меня проблема с командами SUM, LEFT OUTER JOIN и GROUP BY, но не могу понять, где моя ошибка.Дублирование, включающее SUM, LEFT JOIN и GROUP BY
У меня есть две таблицы, одна для операций с клиентами и одна для требований клиентов. Клиент может иметь несколько транзакций и несколько претензий, но в обеих таблицах строки уникальны. У клиентов также нет претензий.
Пример транзакция таблица:
Transactions:
Customer | Transaction Year | Amount
-------------------------------------
A | 2007 | 100
A | 2008 | 80
A | 2008 | 50
A | 2009 | 210
Пример претензии таблица:
Claims:
Customer | Claim Year | Amount
-------------------------------
A | 2007 | 30
A | 2007 | 40
A | 2009 | 110
Нужный выход суммировать две суммы, и производить строку для каждой уникальной комбинации Клиента и года.
Desired Output:
Customer | Year | Transaction Amount | Claim Amount
----------------------------------------------------
A | 2007 | 100 | 70
A | 2008 | 130 | NULL
A | 2009 | 210 | 110
Я использовал команду левое внешнее соединение с GROUP BY команды для клиента и значения года. Но я получаю дублирование значения суммы транзакции, а множественное число относится к числу совпадающих строк в таблице Claims.
Таким образом, используя мой пример данных я получаю следующее:
Actual Output:
Customer | Year | Transaction Amount | Claim Amount
----------------------------------------------------
A | 2007 | 200 | 70
A | 2008 | 130 | NULL
A | 2009 | 210 | 110
В 2007 году, есть две претензии, которые уже привели к значению Transactions.Amount умножается на два (когда есть три претензии, Transaction.Amount утроился и т. д.).
Мой код выглядит следующим образом:
SELECT Transactions.Customer,
Transactions.Year,
sum(Transactions.Transaction Amount),
sum(Claims.Claim Amount)
FROM Transactions
LEFT JOIN Claims ON Claims.Customer = Transactions.Customer
AND Transactions.Year = Claims.Year
GROUP BY Transactions.Customer, Transactions.Year
ли ложь в ответ подзапросов? Я не знаком с ними, поэтому любые указатели будут замечательными. Благодарю.
Вы можете попробовать положить отдельную статью? –
DISTINCT не изменит результат, поскольку он работает по строкам таблицы результатов (которые теперь различаются), а не по столбцам. – Peadar