Sql 选择聚合和日期范围

Sql 选择聚合和日期范围,sql,sql-server,tsql,aggregate,date-range,Sql,Sql Server,Tsql,Aggregate,Date Range,我想不出这个问题,应该很简单。但我不知所措。 如何使用受日期范围限制的合计和进行查询 鉴于此表: 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.0

我想不出这个问题,应该很简单。但我不知所措。 如何使用受日期范围限制的合计和进行查询

鉴于此表:

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

在Microsoft SQL Server中,您可以这样做。 根据每个EmployeeID的年份对数据进行分组 可以使用带有
year
函数的
HAVING
子句过滤特定年份的数据。 此查询提供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

哪个数据库管理系统?是sql server、oracle还是MySQL阻止了您自己编写此类查询?您卡在哪里?Microsoft SQl Server我无法在HAVING子句中设置日期范围。请演示如何使用Where子句中的日期函数来筛选特定年份的日期,因为这似乎是OP挂起的一部分。@TML,您是对的,添加了HAVING子句以演示年份部分。是的,先生。这很有效。我刚刚添加了EmployeeID的订单,这正是我需要的。谢谢。增加HAVING条款的建议很好。再次感谢!