SQL,在连接表上查找总和

Cin*_*o28 2 sql sql-server

我有3个表,我正在尝试加入,并获得一列的总和.我在为它提出一个有效的查询方面遇到了很多困难.这是表格

CoinAwards
+----+------------+------------+-----------+
| ID | EmployeeID | AwardDate  | CoinLevel |
+----+------------+------------+-----------+
|  1 | 116733     | 6/11/2015  | 1         |
|  2 | 116359     | 5/20/2016  | 3         |
|  3 | 116733     | 12/8/2015  | 5         |
|  4 | 10637      | 10/25/2015 | 2         |
|  5 | 105197     | 9/15/2016  | 3         |
+----+------------+------------+-----------+

CoinLevels
+----+-------+
| ID | Value | 
+----+-------+
|  1 | 5     | 
|  2 | 10    | 
|  3 | 15    | 
|  4 | 50    | 
|  5 | 100   |
+----+-------+

Employees
+------------+------------+----------+
| EmployeeID | FirstName  | LastName |
+------------+------------+----------+
|  116733    | John       | Doe      |
|  116359    | Jason      | Watson   |
|  10637     | Brandon    | Wilson   |
|  105197    | Mike       | Jones    |
+------------+------------+----------+
Run Code Online (Sandbox Code Playgroud)

我需要做的是报告一年内给员工的总硬币值.所以我要找的最终结果是这样的:

RESULT: Total Sum of Coin Values given in 2015
+------------+------------+----------+-------------------------+
| EmployeeID | FirstName  | LastName | Sum_Of_2015_Coin_Values |
+------------+------------+----------+-------------------------+
|  116733    | John       | Doe      | 105                     |
|  116359    | Jason      | Watson   | 0                       |
|  10637     | Brandon    | Wilson   | 10                      |
|  105197    | Mike       | Jones    | 0                       |
+------------+------------+----------+-------------------------+
Run Code Online (Sandbox Code Playgroud)

这是我一直在研究的查询,但它不起作用:

SELECT CoinAwards.EmployeeID, CoinAwards.AwardDate, CoinAwards.CoinLevel,
  SUM(CoinLevels.Value) AS Sum_Of_2015_Coin_Values, 
  Employees.FirstName, Employees.Lastname
FROM CoinAwards 
LEFT OUTER JOIN
  CoinLevels ON CoinAwards.CoinLevel = CoinLevels.ID 
LEFT OUTER JOIN
  Employees ON Employees.EmployeeID = CoinAwards.EmployeeID
WHERE  (CoinAwards.AwardDate BETWEEN '01/01/2015' AND '12/31/2015')
GROUP BY CoinAwards.EmployeeID
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何更改此查询以获得我正在寻找的结果?谢谢你的帮助!

Joh*_*tti 6

Select E.EmployeeID
      ,E.FirstName
      ,E.LastName 
      ,Sum_Of_2015_Coin_Values = isnull(sum(L.Value),0)
 From  Employees E
 Left Join  CoinAwards C on (E.EmployeeID = C.EmployeeID  and Year(C.AwardDate)=2015   )
 Left Join  CoinLevels L on (C.CoinLevel = L.ID )
 Group By 
       E.EmployeeID
      ,E.FirstName
      ,E.LastName 
Run Code Online (Sandbox Code Playgroud)