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

Чтобы получить дополнительные сведения о соединениях, перейдите по ссылке ниже:

Другие вопросы по тегам