Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在联接查询中选择最新记录_Sql_Sql Server_Sql Server 2008_Join - Fatal编程技术网

Sql 在联接查询中选择最新记录

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

下面是我对一个表中的更新管理器字段的查询。我面临的问题是,我想在RH表中选择具有最新开始日期的用户(NRH.AffectedUserNumber)

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