У меня проблема в Oracle SQL, которую я пытаюсь развернуть.SQL SELECT Значения сумм без учета дубликатов
Я проиллюстрирую пример. У меня есть три таблицы, которые я запрашивая:
Employees
__________________________________________
| EmployeeID | Name |
| 1 | John Smith |
| 2 | Douglas Hoppalot |
| 3 | Harry Holiday |
...
InternalCosts
________________________________
| IntID | Amount | EmployeeID |
| 1 | 10 | 1 |
| 2 | 20 | 2 |
| 3 | 30 | 1 |
...
ExternalCosts
________________________________
| ExtID | Amount | EmployeeID |
| 1 | 40 | 1 |
| 2 | 50 | 2 |
| 3 | 60 | 1 |
...
То, что я хочу, чтобы достичь является результатом одной строки на одного работника, с суммами каждого из своих внутренних и внешних издержек, т.е.
____________________________________________________________
| Name | InternalCostTotal | ExternalCostTotal |
| John Smith | 40 | 100 |
| Douglas Hoppalot | 20 | 50 |
...
The проблема заключается в том, что когда я запрашиваю таблицы InternalCosts и ExternalCosts, я получаю каждую перестановку затрат, а не только одну на одного сотрудника. Когда я группирую по имени сотрудника и суммирую количество полей, значения слишком высокие. То, что я пробовал:
SELECT emp.Name, sum(int.Amount), sum(ext.Amount)
FROM Employees emp,
InternalCosts int,
ExternalCosts ext
WHERE emp.EmployeeId = int.EmployeeID
and emp.EmployeeID = ext.EmployeeID
GROUP BY emp.Name
Приведенные выше примеры вернутся:
____________________________________________________________
| Name | InternalCostTotal | ExternalCostTotal |
| John Smith | 80 | 200 | <- too high!
| Douglas Hoppalot | 20 | 50 |
...
признательна за любую помощь/советы/мысли!
проблема при подключении сотрудников с internalcosts вы получите два ряда при EmployeeID = 1 и когда вы присоединитесь к результирующей 2 строки с внешними кодами возвращают 4 строки, а затем вычисляют сумму. Поместите int.extid = int.intid в where where. –