Sql 在联接查询中选择最新记录
下面是我对一个表中的更新管理器字段的查询。我面临的问题是,我想在RH表中选择具有最新开始日期的用户(NRH.AffectedUserNumber)Sql 在联接查询中选择最新记录,sql,sql-server,sql-server-2008,join,Sql,Sql Server,Sql Server 2008,Join,下面是我对一个表中的更新管理器字段的查询。我面临的问题是,我想在RH表中选择具有最新开始日期的用户(NRH.AffectedUserNumber) WITH [NewReqHeader] AS (SELECT ROW_NUMBER() OVER(ORDER BY RH.StartDate DESC) AS rowid , RH.RequestId , RH.RequestType , RH.RequestStat
WITH [NewReqHeader]
AS
(SELECT ROW_NUMBER()
OVER(ORDER BY RH.StartDate DESC) AS rowid
, RH.RequestId
, RH.RequestType
, RH.RequestStatusID
, RH.AffectedUserNumber
, RPD.TaskId
, RPD.HotelID
, RH.StartDate
FROM DBO.RequestPermissionDetail RPD
JOIN DBO.RequestHeader RH ON RH.RequestId = RPD.RequestId
AND RH.RequestType = 2
AND RH.RequestStatusID = 20
AND RPD.TaskId = 923
)
UPDATE #Facility_Manager
SET Manager = NRH.AffectedUserNumber
FROM #Facility_Manager FM
LEFT OUTER JOIN [NewReqHeader] NRH ON FM.FacilityId = NRH.HotelID
AND ISNULL(FM.FacilityId ,'') != ''
WHERE FM.SecPermissionCount > 1
您需要在
行数
函数中添加一个分区依据
子句,以获得每个HotelID的计数。那么只需将WHERE子句限制为
WHERE FM.SecPermissionCount > 1 AND NRH.rowid = 1
你能解释一下怎么做吗?
WHERE FM.SecPermissionCount > 1 AND NRH.rowid = 1