我正在计算连续2天加班的员工人数。
我有一张看起来像这样的表
EmpID Date Hour
A 2017/1/6 2
A 2017/1/9 2
A 2017/1/10 3
B 2017/1/5 1
B 2017/1/11 2
C 2017/1/10 3
C 2017/1/11 1
我可以使用DateAdd功能查找员工加班时间[日期]的第二天。
EmpID Date Hour NextDay
A 2017/1/6 2 2017/1/7
A 2017/1/9 2 2017/1/10
A 2017/1/10 3 2017/1/11
B 2017/1/5 1 2017/1/6
B 2017/1/11 2 2017/1/12
C 2017/1/10 3 2017/1/11
C 2017/1/11 1 2017/1/12
然而,现在,我被困在这之后。 在Excel中,我可以使用countif()来检查每个员工的表格中是否显示等于[NextDay]的[Date]。如下表所示。
EmpID Date Hour NextDay OTNextDay
A 2017/1/6 2 2017/1/7 0
A 2017/1/9 2 2017/1/10 1
A 2017/1/10 3 2017/1/11 0
B 2017/1/5 1 2017/1/6 0
B 2017/1/11 2 2017/1/12 0
C 2017/1/10 3 2017/1/11 1
C 2017/1/11 1 2017/1/12 0
我可以在Access中执行类似的操作吗? 这是我的第一个问题。我希望这很清楚。
答案 0 :(得分:0)
我能看到的唯一简单方法是使用域聚合函数。使用第二个数据集示例:
SELECT EmpID, [Date], Hour, NextDay,
DCount("*","QueryName","EmpID='" & [EmpID] & "' And [Date]=#" & [NextDay] & "#") AS OTNextDate
FROM QueryName;
日期和小时是保留字,不应使用保留字作为任何名称。
答案 1 :(得分:0)
您可以使用简单的子查询:
SELECT
YourTable.EmpID,
YourTable.[Date],
DateAdd("d", 1, YourTable.[Date]) As
NextDay,
(Select
Count(*)
From
YourTable As T
Where
T.EmpID = YourTable.EmpID
And
T.[Date] = DateAdd("d", 1, YourTable.[Date])) AS
OTNextDay
FROM
YourTable;