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

时间:2017-04-12 03:43:53

标签: ms-access

我正在计算连续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中执行类似的操作吗? 这是我的第一个问题。我希望这很清楚。

2 个答案:

答案 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;