基于先前记录内容的SELECT记录(无关系)

时间:2010-12-15 04:51:13

标签: sql-server subquery

我有一个表,事件,它有一个EventId(PK),Date,EmployeeId(FK)和StatusId(FK)。

我需要根据特定员工之前发生的记录标准(按时间顺序按日期)选择记录。我不知道怎么做,因为没有关系。

我想选择所有事件的计数,按EmployeeId分组,其中:

(a)StatusId = 1
(b)EmployeeId的最后一个事件(按时间顺序排列)的StatusId为9。

请注意,任何事件的前一记录都不一定与该员工有关。

*编辑注意到我正在使用SQL Server,而且我按日期按时间顺序引用上一个事件!

2 个答案:

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

类似的东西