SQL: выберите все из столбца A и добавьте значение из столбца B, если имеется
У меня довольно простая проблема с SQL, я просто не могу произнести это правильно (поэтому я ничего не нашел в Google, и мой заголовок, вероятно, вводит в заблуждение)
Проблема в том, что у меня есть большая таблица, содержащая информацию о транзакциях в форме (ID, EmployeeID, Date, Value) (и некоторые другие, но только те, которые имеют значение в настоящее время) и список всех EmployeeID. То, что я хочу, - это таблица результатов, показывающая все идентификаторы сотрудников с их совокупной стоимостью транзакций за определенный промежуток времени. Проблема заключается в следующем: как я могу получить тех сотрудников в таблицу результатов, которые не имеют записи для данного периода времени?
например
ID EMPLID DATE VALUE
1 1 2013-01-01 1000
2 2 2013-02-02 2000
3 1 2013-01-03 3000
4 2 2013-04-01 2000
5 2 2013-03-01 2000
6 1 2013-02-01 4000
EMPLID NAME
1 bob
2 alice
А теперь я хочу, чтобы совокупная стоимость всех транзакций после 2013-03-01 была такой
EMPLID VALUE
1 0 <- how to get this based on the employee table?
2 4000
Используемый SQL Server - Firebird, и я подключаюсь к нему через JDBC (если это имеет значение)
1 ответ
SELECT a.EmpID, a.Name,
COALESCE(SUM(b.Value), 0) TotalValue
FROM Employee a
LEFT JOIN Transactions b
ON a.EmpID = b.EmpID AND
b.Date >= '2013-03-01'
GROUP BY a.EmpID, a.Name
Чтобы получить дополнительные сведения о соединениях, перейдите по ссылке ниже: