我无法解决这个问题并且应该很容易。但我不知所措。 如何使用由日期范围约束的聚合SUM进行查询?
鉴于此表:
ID EmployeeID PayAmount PayDate
1 48 289.0000 2003-12-22 00:00:00.000
2 251 458.0000 2003-12-30 00:00:00.000
3 48 248.0000 2003-12-30 00:00:00.000
4 167 255.5000 2003-12-30 00:00:00.000
5 48 100.00 2004-01-31 00:00:00.000
6 251 100.00 2004-01-31 00:00:00.000
7 251 300.00 2004-02-14 00:00:00:000
我想运行一个查询,看看每个员工在某一年内赚了多少钱。因此,对于2003年,结果将是这样的:
EmployeeID TotalPaid
48 537.00
167 255.50
251 458.00
2004年的结果将是:
EmployeeID TotalPaid
48 100.00
251 400.00
答案 0 :(得分:1)
在Microsoft SQL Server中,您可以这样做。
根据每个EmployeeID的Year分组数据
可以使用HAVING
子句WITH YEAR
函数过滤特定年份的数据。
此查询提供2004年的数据
SELECT EmployeeID,
SUM(PayAmount) as TotalPaid,
DATEADD(YEAR, DATEDIFF(YEAR,0, Paydate), 0) as Year
FROM Table1
GROUP BY EmployeeID, DATEADD(YEAR, DATEDIFF(YEAR,0, Paydate), 0)
HAVING YEAR(DATEADD(YEAR, DATEDIFF(YEAR,0, Paydate), 0)) =2004