私は次のコードを持っています。私の問題は、この現在のクエリで使用した AccessLog テーブルに似た EmployeeID 列を持つ別のテーブル名 Employee から各従業員名を取得したいことです。これら2つのテーブルに参加すると、タイトルで言った奇妙なエラーが発生します。最初の SELECT の A.EmployeeID、Employee.FirstName および ; に参加するための追加コードなし。AS A INNER JOIN Employee ON A.EmployeeID= Employee.EmployeeID を最後の ORDER By 句にすると、うまくいきます。問題はネーミング/エイリアスにあると思います。私が見た同様のスレッドがありますが、それらは私の問題を解決しませんでした。誰かが私に欠点を指摘できれば、感謝します。
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]));