按访问分隔列

时间:2015-06-10 15:50:02

标签: sql ms-access select group-by

我对SQL非常陌生并且拥有以下(看似简单的)数据库查询。

我有一个表格,其中包含一组员工的所有时间跟踪信息:

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

foreach date,我想计算一下有效的独特员工数量,以表格结尾:

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

它抱怨了一个“缺少运算符”,突出显示了我对callerName的使用。

2 个答案:

答案 0 :(得分:1)

好消息是您的查询完全合法(并且直截了当!)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

答案 1 :(得分:0)

这将有效: -

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