SELECT записи основаны на предыдущем содержании записей (без связи) - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть таблица Events, в которой есть EventId (PK), Date, EmployeeId (FK) и StatusId (FK).

Мне нужно выбрать запись на основе критериев записи, котораяпроизошло непосредственно перед этим (хронологически по дате) для конкретного сотрудника.Я понятия не имею, как это сделать, потому что нет никаких отношений.

Я бы хотел выбрать количество всех событий, сгруппированных по EmployeeId, где:

(a) StatusId = 1(b) Последнее событие этого EmployeeId (в хронологическом порядке) имеет StatusId 9.

Обратите внимание, что предыдущая запись для любого события не обязательно связана с этим сотрудником.

* отредактировано, чтобы отметитьчто я использую SQL Server и ссылаюсь на предыдущее событие в хронологическом порядке по дате!

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Хорошо, вы можете выполнить подзапрос, т. Е.

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(*)
0 голосов
/ 15 декабря 2010
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

что-то в этом роде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...