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条款的建议很好。再次感谢!