0

以下は、1 つのテーブルのマネージャー フィールドを更新するクエリです。私が直面している問題は、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
4

2 に答える 2

2

各 HotelID ごとにカウントを取得するPARTITION BYには、関数に句を追加する必要があります。 次に、WHERE句を次のように制限します ROW_NUMBER

WHERE  FM.SecPermissionCount > 1 AND NRH.rowid = 1
于 2013-05-28T13:21:24.203 に答える
0
update fm
set 
  Manager = (
    select top 1 AffectedUserNumber
    from 
    NewReqHeader nrh
    where fm.FacilityID = nrh.HotelID
    order by StartDate desc
  )
from 
#Facility_Manager fm
where
SecPermissionsCount > 1
于 2013-05-28T12:50:55.770 に答える