选择汇总和日期范围

时间:2014-10-08 22:08:13

标签: sql sql-server tsql aggregate date-range

我无法解决这个问题并且应该很容易。但我不知所措。 如何使用由日期范围约束的聚合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

1 个答案:

答案 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