Ms access 如果数据出现在其他列中,则访问计数

Ms access 如果数据出现在其他列中,则访问计数,ms-access,Ms Access,我试图统计连续两天加班的员工人数 我有一张像这样的桌子 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
 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中做类似的事情吗?
这是我的第一个问题。我希望这足够清楚。

我能看到的唯一简单的方法是使用域聚合函数。使用第二个数据集示例:

选择EmpID、[日期]、小时、下一天、, DCount*,QueryName,EmpID='&[EmpID]&'和[Date]=&[NextDay]&作为OTNextDate 来自QueryName


日期和小时是保留字,不应使用保留字作为任何名称。

您可以使用一个简单的子查询:

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;