我有一个表,事件,它有一个EventId(PK),Date,EmployeeId(FK)和StatusId(FK)。
我需要根据特定员工之前发生的记录标准(按时间顺序按日期)选择记录。我不知道怎么做,因为没有关系。
我想选择所有事件的计数,按EmployeeId分组,其中:
(a)StatusId = 1
(b)EmployeeId的最后一个事件(按时间顺序排列)的StatusId为9。
请注意,任何事件的前一记录都不一定与该员工有关。
*编辑注意到我正在使用SQL Server,而且我按日期按时间顺序引用上一个事件!
答案 0 :(得分:1)
好的,你可以做一个子查询,即
SELECT EmployeeID, COUNT(*)
FROM Events e1
WHERE (SELECT TOP 1 StatusID FROM Events e2 WHERE e1.EmployeeID = e2.EmployeeID ORDER
BY Date desc) = 9
GROUP BY EmployeeID, COUNT(*)
答案 1 :(得分:0)
Events (EventId, Date, EmployeeId, StatusId)
select EmployeeId, count(*) from Events as e1
where e1.StatusId = 1
and exists (select e2.EventID from Events as e2
where e2.EmployeeId=e1.EmployeeId and e1.date > e2.date and e2.StatusId = 9 order by e2.date desc limit 1)
group by EmployeeId
类似的东西