我有以下代码。我的问题是我想从另一个表名 Employee 中检索每个员工姓名,该表名 Employee 的 EmployeeID 列类似于我在当前查询中使用的 AccessLog 表。现在,当我加入这两个表时,它给出了我在标题上所说的那个奇怪的错误。没有在第一个 SELECT 和 作为 A.EmployeeID= Employee.EmployeeID 到最后一个 ORDER By 子句的 INNER JOIN Employee,它运行良好。我认为问题在于命名/别名。我看到了类似的线程,但那些并没有解决我的问题。如果有人能指出我的错误,将不胜感激。
SELECT **A.EmployeeID,
Employee.FirstName,**
MonthName(Month([LogDate])) AS MonthName,
Round((Sum(Int(DateDiff("s",'00:00:00',Duration)))/3600)) AS TotalTime
FROM (
SELECT AccessLog.EmployeeID,
AccessLog.LogDate,
AccessLog.TerminalID,
AccessLog.LogTime,
Format((SELECT max(LogTime)
FROM AccessLog AS Alias
WHERE Alias.LogTime < AccessLog.LogTime
AND Alias.EmployeeID = AccessLog.EmployeeID
AND Alias.LogDate = AccessLog.LogDate
AND (Alias.TerminalID)<>"iGuard1A"
And (Alias.TerminalID)<>"iGuard1B"
AND Alias.EmployeeID = AccessLog.EmployeeID),"hh:nn:ss") AS PrevTime,
Format((ElapsedTime(iif(PrevTime = '',logtime,prevtime),[LogTime])),"hh:nn:ss") AS Duration,
AccessLog.InOut
FROM AccessLog
WHERE (((AccessLog.TerminalID)<>"iGuard1A"
And (AccessLog.TerminalID)<>"iGuard1B")
AND ((AccessLog.EmployeeID) Like "2*")
AND ((AccessLog.InOut)="OUT"))
ORDER BY AccessLog.EmployeeID, AccessLog.LogDate, AccessLog.LogTime)
**AS A INNER JOIN Employee ON A.EmployeeID= Employee.EmployeeID**
GROUP BY EmployeeID, MonthName(Month([LogDate]));