2

我在使用 SQL 时遇到了一个非常简单的问题,我只是无法正确地用词(因此我在谷歌上没有找到任何东西,而且我的标题可能具有误导性)

问题是:我有一个大表,其中包含格式为(ID、EmployeeID、Date、Value)的交易信息(还有一些,但目前只有这些)和所有 EmployeeID 的列表。我想要的是一个结果表,显示所有员工 ID 及其在给定时间跨度内的交易总值。问题是:如何让那些在给定时间段内没有条目的员工进入结果表?

例如

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 连接到它(如果重要的话)

4

1 回答 1

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-04-04T12:29:27.537 回答