按访问单独的列分组

group by access seperate column

我是 SQL 的新手,有以下(看似简单的)数据库查询。

我有一个 table 包含一组员工的所有时间跟踪信息:

date        employeeId timeIn timeOut
01/01/20    1355       12:00  4:00
01/01/20    1355       4:30   6:00
01/01/15    1234       9:00   12:00
02/01/15    5555       5:00   6:00
02/01/15    1111       1:00   4:00

对于每个日期,我想计算工作的唯一员工数量,以 table 结尾,例如:

date      totalEmployeesWorked
01/01/15  2
02/01/15  2

还有几个我想忽略的 ID。到目前为止我想出了:

我在 MS Access 2003 中尝试过以下查询:

SELECT [TimeTrackingLog-sql].date, COUNT(DISTINCT callerName)
FROM [TimeTrackingLog-sql]
GROUP by [TimeTrackingLog-sql].date

它抱怨 'missing operator',强调我对 callerName 的使用。

好消息是您的查询完全合法(而且直接!)ANSI SQL,它适用于任何合理的数据库。坏消息是您使用的 MS Access 不支持此语法。

它可以通过子查询解决,但是:

SELECT   t.date, COUNT(*)
FROM     (SELECT DISTINCT [TimeTrackingLog-sql].date, 
                          [TimeTrackingLog-sql].callerName
          FROM   [TimeTrackingLog-sql]) t
GROUP BY t.date

这将起作用:-

SELECT date, count(distinct `employeeId`) FROM `table_name` group by date;