0

这真的让我很沮丧。

所以,我正在创建一个数据库,记录人们加入和离开我们办公室以及角色的变化,以跟踪员工人数。这简明扼要地记录在下表中:

EmployeeID | RoleID | FTE | Date

FTE 是该角色值得的全职小时数的比例(即 1 是全职,0.5 是兼职等)。离职事件记录为将角色更改为 0(缺席)和 FTE 更改为 0。问题是,人们可以拥有多个角色,这意味着他们实际工作的小时数是该员工所有事件的组合发生在同一天。因此,如果有人从一个项目的全职工作转到两个项目之间分配时间,则会为每个项目记录一个 ChangeRole 事件。

所以我想知道每月的总人数。本质上,我想要的查询是“从该表中选择所有记录,其中对于每个 EmployeeID,日期是指定日期以下的最大日期。” 从那里我可以总结 FTE 以获得员工人数。

现在我可以孤立地得到其中一些东西:我可以做 max(date),我可以做标准:<#dd/mm/yyyy##. 但是由于某种原因,我似乎无法将所有这些结合起来以获得我想要的东西,而且我正处于一个我一直盯着这个问题太久以至于对我来说没有意义的地步。谁能帮我吗?谢谢!

4

1 回答 1

0

像这样的东西?

SELECT Events.*
FROM Events INNER JOIN (
    SELECT EmployeeID, Max(Date) AS LatestDate
    FROM Events
    WHERE Events.Date < [Date entered]
    GROUP BY EmployeeID) AS S
  ON (Events.EmployeeID = S.EmployeeID) AND (Events.Date = S.LatestDate)
于 2013-10-16T16:17:46.033 回答