В следующем запросе мне нужно взять только одну запись, которая является последней версией phdate.Получить записи, основанные на последней дате
WITH TEMP_PAT_PIP_AddedBy
AS (
SELECT S.ppId
,(
SELECT PersonID
FROM [PFMADestination].[dbo].PERSON
WHERE SourceType = 'user_Users'
AND SourceId = S.uuId
) AS AddedByToStore
,phDate
FROM [PFMADestination].[dbo].PatientPIP D
INNER JOIN [PFMAOldProd].[dbo].pat_History S ON S.ppId = D.PatientId
AND phEvent = 'PIP-info uppdaterad'
)
--select * from TEMP_PAT_PIP_AddedBy order by ppId, phDate desc
UPDATE P
SET AddedBy = ISNULL(AddedByToStore, 1), Date=phDate
FROM TEMP_PAT_PIP_AddedBy T
INNER JOIN [PFMADestination].[dbo].[PatientPIP] P ON T.ppId = P.PatientId
Ожидаемый результат для КТР Возьмите только последнюю phDate для каждого PPID и игнорировать другие, если его более чем 1 запись затем обновить его.
... где phDate = (выберите max (phDate) из TEMP_PAT_PIP_AddedBy, где ppId = TEMP_PAT_PIP_AddedBy.ppId) – jarlh
@jarlh, я хочу внести это изменение в сам CTE. Является ли это возможным? – Billa