非常感谢您的回复。这个问题一定不是很清楚,因为你们两个解决方案都很相似,但不是我想要的。他们确实让我回去从头开始重试,我不确定为什么我没有首先尝试这个,但下面是返回我正在寻找的结果。在我的问题中,我更改了表/字段名称并省略了我知道自己可以实现的要求,以使问题尽可能简单易读,这就是为什么看起来如此不同:
SET DATEFIRST 1
SELECT e.IdEmpNum,
m.tFirstName,
m.tLastName,
convert(varchar(10), e.dtEventReal, 101) as "event_date",
convert(varchar(20), min(e.dtEventReal), 108) as "min",
convert(varchar(20), max(e.dtEventReal), 108) as "max",
round((datediff(minute,
min(e.dtEventReal),
max(e.dtEventReal)
)/60.0), 2) as "hours"
FROM tblEvents e INNER JOIN tblEmployees m ON e.IdEmpNum = m.iEmployeeNum
WHERE e.dtEventReal >= dateadd(day, 1-datepart(dw, getdate()), convert(date,getdate()))
GROUP BY e.IdEmpNum, m.tFirstName, m.tLastName, convert(varchar(10), e.dtEventReal, 101)
ORDER BY e.IdEmpNum, convert(varchar(10), e.dtEventReal, 101) ASC;
DATEFIRST 和 WHERE 条件指定仅返回本周的事件。我现在唯一遇到的问题是对“小时”计算求和。我收到错误消息“SQL Server 无法对包含聚合或子查询的表达式执行聚合函数”。