我需要进行查询,以显示一个人留在办公室的时间。 我有一个列表,创建一个人在办公室进入的记录和 办公室外的人员的记录和其他记录。 我有一些困难,因为一个人可以在同一天进出多次,有时一个人没有注册你的进入或退出。 按照示例
╔════════════╦════════════╦════════════════════╦═════════════════╦═════════╦═══════╗
║ Local Date ║ Local Time ║ Employee ║ Office ║ Catraca ║ Staus ║
╠════════════╬════════════╬════════════════════╬═════════════════╬═════════╬═══════╣
║ 11/7/2012 ║ 10:16 ║ SILVA ,ANDRE BRAGA ║ Alexandre Duma ║ 002 ║ In ║
║ 11/7/2012 ║ 13:03 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ Out ║
║ 11/7/2012 ║ 15:19 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ Out ║
║ 11/7/2012 ║ 15:25 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ In ║
║ 11/7/2012 ║ 18:31 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ Out ║
║ 11/7/2012 ║ 18:40 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ In ║
║ 11/7/2012 ║ 19:56 ║ SILVA ,ANDRE BRAGA ║ Alexandre Dumas ║ 004 ║ Out ║
╚════════════╩════════════╩════════════════════╩═════════════════╩═════════╩═══════╝
在这个例子中,这个人在办公室里待了07:09小时
Regads 安德烈
答案 0 :(得分:0)
好的,总结起来相当容易。在没有匹配时间戳的情况下消除时间戳更加困难。
至于总数:日期&时间内部存储为数字。假设没有人在午夜工作,那么你所要做的就是将所有“In”时间加起来并从所有“Out”时间中减去。像这样:
SELECT [TotOut]-[TotIn] AS TotHours, *
FROM (SELECT CheckIn.Employee, CheckIn.[Local Date], Sum(CheckIn.[Local Time]) AS [TotIn]
FROM CheckIn
WHERE (((CheckIn.Staus)="In"))
GROUP BY CheckIn.Employee, CheckIn.[Local Date]) AS TotIn INNER JOIN (SELECT CheckIn.Employee, CheckIn.[Local Date], Sum(CheckIn.[Local Time]) AS [TotOut]
FROM CheckIn
WHERE (((CheckIn.Staus)="Out"))
GROUP BY CheckIn.Employee, CheckIn.[Local Date]) AS TotOut ON (TotIn.Employee = TotOut.Employee) AND (TotIn.[Local Date] = TotOut.[Local Date]);
消除不匹配的时间是可能的,但很难。此查询执行大部分操作。但是,它正在跳过第一条记录,因此需要调整。
SELECT A.ID, A.[Local Time], B.[Local Time] AS [Prev Time], A.Staus
FROM CheckIn AS A LEFT JOIN CheckIn AS B ON (A.Employee = B.Employee) AND (A.[Local Date] = B.[Local Date])
WHERE (((B.[Local Time])=DMax("[local time]","[checkin]","[local time] < #" & [a].[Local Time] & "#")) AND ((A.Staus)<>[b].[staus]))
ORDER BY A.[Local Time];
此外,您还需要首先创建一个记录集,该记录集会跳过任何以“Out”状态开头的记录。 Here's an article that may help