如何将 select top 1 插入到我的查询中?

How to insert select top 1 into my query?

我有一个tableCandidates。每个候选人都有一个经理。每个候选人的状态从 1 到 11,存储在 table CandidatesStatusesLog 中。我需要了解每个经理的每个状态有多少。下面的查询为每个候选人重新调整从 1 到 11 的所有状态,但我只需要获得最后一个。

SELECT COUNT(c.candidateId) as resumesCount,
csl.[statusId],
s.[managerINN]
FROM sm.Candidates c
INNER JOIN sm.CandidateVacancies cv on c.[candidateId] = cv.[candidateId]
INNER JOIN sm.Staff s on s.[staffId] = cv.[vacancyId]
INNER JOIN sm.CandidatesStatusesLog csl on c.[candidateId] = csl.[candidateId]
GROUP BY csl.[statusId], s.[managerINN]

我需要以某种方式使用下面的查询,但我不知道如何:

select top 1 * from sm.CandidatesStatusesLog
order by logStatusId  desc

TableCandidatesStatusesLog。这里对于候选人 58 我只需要获得值 7,而不是同时获得 5 和 7。

一个简单的选项使用 row_number():

SELECT COUNT(*) as resumesCount, csl.[statusId], s.[managerINN] 
FROM sm.Candidates c
INNER JOIN sm.CandidateVacancies cv on c.[candidateId] = cv.[candidateId]
INNER JOIN sm.Staff s on s.[staffId] = cv.[vacancyId]
INNER JOIN (
    SELECT csl.*, ROW_NUMBER() OVER(PARTITION BY [candidateId] ORDER BY logStatusId DESC) as rn
    FROM sm.CandidatesStatusesLog csl
) csl on c.[candidateId] = csl.[candidateId]
WHERE cs1.rn = 1
GROUP BY csl.[statusId], s.[managerINN]