Как получить самые последние обновленные данные из дубликатов записей? - PullRequest
0 голосов
/ 01 июня 2018

у меня 3 таблицы.Table1 имеет идентификатор memberhsip и присоединяется к Tbl2, который имеет идентификатор регистрации.В Tbl3 есть данные, которые меня интересуют. В идеальном мире у участника не должно быть двух идентификаторов регистрации за один и тот же период;однако, у него есть это.Меня интересует самый последний обновленный идентификатор регистрации.Одним из критериев является срок действия и срок.Например, если я ищу даты вступления в силу и термины с 1 января по 2 февраля 2008 года, SQL принесет мне 2 подходящие записи для члена 1. Как я могу получить максимум «Последнее обновление» из Tbl3.

Tbl1

Member iD
---------
|   1   |
---------
|   1   |
---------

Tbl2

|Member ID |  Enrollment ID |
|--------- | ---------------|
|    1     |        E1      |
|----------| ---------------|
|    1     |        E2      |
|---------------------------|

Tb3

---------------------------------------------|-------------------------|
| Enrollment ID | Effective Date | Term Date |       Last Update       |
|---------------|----------------|-----------|-------------------------|
|      E1       | 1/1/2018       |  2/1/2018 | 2018-01-19 11:20:03.483 |
|---------------|----------------|-----------|-------------------------|
|      E2       | 1/1/2018       |  2/1/2018 | 2018-01-19 13:28:20.923 |
|---------------|----------------|-----------|-------------------------|

1 Ответ

0 голосов
/ 02 июня 2018

Я не уверен, каким должен быть ваш предполагаемый вывод, и я не проверял это без предоставленных данных, но вы можете при необходимости отредактировать нижеприведенное в выборке, и это должно дать вам максимальную дату последнего обновления:

select * from 
(
select a.[member id]
    , b.[enrollment id]
    , c.[effective date]
    , c.[term date]
    , c.[last update]
    , row_number() over (partition by a.[member id] order by c.[last update] desc) row_num
        from tbl1 a
            join tbl2 b on a.[member id] = b.[member id]
            join tbl3 c on b.[enrollment id] = c.[enrollment id]
) x
where row_num = 1
;
...