我对SQL有一个很容易的问题,我只是不能正确地说出来(因此我在google中找不到任何内容,我的标题可能会产生误导)
问题是:我有一个包含表单中的事务信息的大表(ID,EmployeeID,Date,Value)(还有一些,但只有当前的那些),以及所有EmployeeID的列表。我想要的是一个结果表,显示所有员工ID及其在给定时间跨度内的事务聚合值。 问题是:如何将这些员工纳入结果表中,并且在给定时间段内没有条目?
e.g。
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连接到它(如果这很重要)
答案 0 :(得分:4)
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
要进一步了解联接,请访问以下链接: