У меня есть таблица со списком кандидатов и связаны представлен с историей кандидатов статусов:Выберите строку, которая не сопровождается специфическими один
CandidateId FirstName LastName
--------------------------------
1 User One
2 User Two
и
CandidateStatusId CandidateId Status Timestamp
--------------------------------------------------------
1 1 Assigned ...
2 1 Interviewed ...
3 1 Offer Accepted ...
1 2 Assigned ...
2 2 Interviewed ...
3 2 Offer Accepted ...
4 2 Hired ...
5 2 Bench ...
6 2 Hired ...
1 3 Assigned ...
2 3 Interviewed ...
3 3 Offer Accepted ...
4 3 Hired ...
5 3 Bench ...
Я хочу отбора кандидатов, который имеет последний статус «Предложение принято» и никогда раньше не было «Нанято». В моем примере должен быть выбран только 1-й пользователь, потому что второй уже нанятый и третий был нанят раньше (и фактически на скамейке).
UPD: Я подготовил SQL заявление, которое должно фильтровать пользователей, но не уверен, что его скорость, количество пользователей может быть довольно большой:
SELECT * FROM dbo.CandidatePositionStatus
WHERE CandidateId=34841
AND 'Hired' NOT IN (SELECT Status FROM dbo.CandidatePositionStatus WHERE CandidateId=34841)
Но я не знаю, как вставлять его в другой выберите для предоставления CandidateId
UPD2: Я подготовил еще один запрос, но он просто проверяет, имеет ли кандидат статус ОА и не имеет статуса «HR», но скорость запроса по-прежнему остается открытым.
SELECT DISTINCT CandidateId
FROM dbo.CandidatePositionStatus
WHERE
CandidateId IN (
SELECT CandidateId FROM dbo.CandidatePositionStatus WHERE PositionStatusForCandidateCode='Offer Accepted' AND FirstWorkingDay IS NOT NULL
)
AND CandidateId NOT IN (
SELECT CandidateId FROM dbo.CandidatePositionStatus WHERE PositionStatusForCandidateCode='Gired'
)
Что делать, если кандидат id 1 имеет еще одну запись скамьи после принятия Предложения. – TechDo
Это логически невозможно, так что это не так. В логике не удастся с вашими условиями, это нормально. –
@ AlexG.P. В вашем случае выход должен возвращать идентификатор кандидата 1, где он получил предложение, но не нанял право? –