开发者

SELECT records base on previous records contents (no relationship)

开发者 https://www.devze.com 2023-01-31 04:28 出处:网络
I have a table开发者_如何学JAVA, Events, that has an EventId (PK), Date, EmployeeId (FK), and StatusId (FK).

I have a table开发者_如何学JAVA, Events, that has an EventId (PK), Date, EmployeeId (FK), and StatusId (FK).

I need to select a record based on criteria of the record that happened directly before it (chronologically by date) for a particular employee. I have no idea how to do this since there isn't a relationship.

I'd like to select a count of all Events, grouped by EmployeeId, where:

(a) StatusId = 1

(b) The last event by that EmployeeId (chronologically) has a StatusId of 9.

Note that the preceding record for any event is not necessarily related to that employee.

*edited to note that I am using SQL Server, and that I am referencing the previous event chronologically by date!


Ok, Well, you can do a sub query i.e.

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(*)


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

something like that

0

精彩评论

暂无评论...
验证码 换一张
取 消