Где новейшая дата - PullRequest
       36

Где новейшая дата

0 голосов
/ 24 сентября 2019

Я пытаюсь сопоставить и установить записи из одной таблицы в другую.Есть два пункта, где мне нужно.Если для учетной записи указано «A», а DateLastModified - самая последняя (самая новая) дата.

Example John Smith DatelastModified = 1/1/2017
        John Smith DatelastModified = 9/24/19 
I would only want it to match to the John Smith with the date of 9/24/19
Update p
Set p.custom1 = p2.custom1       
FROM PatientDemographics AS p INNER JOIN PatientDemo2 AS p2 
ON
 p.FirstName = p2.FirstName and
 p.LastName = p2.LastName  and 
 p.DateofBirth = p2.DateofBirth and
 p.ZipCode = p2.ZipCode
where p.AccountStatus = 'A'
and DateLastModified is ?

1 Ответ

0 голосов
/ 25 сентября 2019

Используя оконные функции, вы можете выбрать самую последнюю запись для обновления для каждой комбинации first + last + dob + zip (я предполагаю, что это идентифицирует пациента), например:

;WITH PatientsByDateLastModified AS
(
    SELECT *
         , ROW_NUMBER() OVER (PARTITION BY FirstName, LastName, DateofBirth, ZipCode
                                  ORDER BY DateLastModified DESC) AS RN
      FROM PatientDemographics
)
UPDATE patients
   SET patients.custom1 = demo.custom1
  FROM PatientsByDateLastModified patients
 INNER
  JOIN PatientDemo2 demo
    ON patients.FirstName = demo.FirstName
   AND patients.LastName = demo.LastName
   AND patients.DateofBirth = demo.DateofBirth
   AND patients.ZipCode = demo.ZipCode
 WHERE patients.AccountStatus = 'A'
   AND patients.RN = 1 -- this makes sure only the most recent row gets updated
...