Сопоставление с идентификатором пользователя, который обновил запись при группировке по дате последнего обновления - PullRequest
1 голос
/ 23 марта 2020

У меня есть CTE и группировка по дате последнего обновления, чтобы получить последнюю обновленную запись, однако мне нужно удалить столбец «Обновлено по» и «обновлено по имени» из SELECT & GROUP BY, чтобы получить то, что я хочу.

Это связано со случаями, когда запись обновлялась в очень близкое время разными пользователями, но ничего очевидного не изменялось, поэтому я получаю еще одну запись с новой датой обновления и обновлением пользователем, который обычно другой человек.

Если я сделаю так, как показано ниже, я получу группировку по максимальной дате пользователя и имени пользователя, но если я хочу отобразить максимум, обновленный для пользователя Обновлено, то есть ли способ сделать это так, чтобы он показывает максимальную дату обновления, не принимая во внимание пользователя, но каким-то образом сопоставляет данные пользователю, который выполнил последнее обновление, с помощью?

with cte AS(

     SELECT 
     a.CusID    
    ,a.[UpdatedBy]
    ,a.[Updated By Name]
    ,max(a.[UpdatedDate]) [Max-Updated-By]
    ,a.[ID]
    ,a.[Activity Number]
    FROM TABLE a 
    WHERE a.date between '20191031' and getdate()
    group by 
     a.CusID
    ,a.[UpdatedBy]
    ,a.[Updated By Name]
    ,a.[ID]
    ,a.[Activity Number]
)

    --

    select 
    cte.CusID    
    ,cte.[UpdatedBy]
    ,cte.[Updated By Name]
    ,max(cte.[UpdatedDate]) [Max-Updated-By]
    ,cte.[ID]
    ,cte.[Activity Number]
    from cte


CusID    [type12_UpdatedBy]      [Updated By Name]      [Max-Updated-By]      [ID]      [Activity Number]
=====      =================      ================      =================      ====      ================

1001      SmithJa                 James Smith           01012020 13:00         5          22
1001      JonesCr                 Craig Jones           01012020 13:06         5          22

Если я закомментирую обновленные пользователем и их обновленные имя дает мне то, что я хочу, то есть только самое последнее обновление, но я хочу увидеть имя пользователя, который это сделал.

with cte AS(

     SELECT 
     a.CusID    
    --,a.[UpdatedBy]
    --,a.[Updated By Name]
    ,max(a.[UpdatedDate]) [Max-Updated-By]
    ,a.[ID]
    ,a.[Activity Number]
    FROM TABLE a 
    WHERE a.date between '20191031' and getdate()
    group by 
     a.CusID
    --,a.[UpdatedBy]
    --,a.[Updated By Name]
    ,a.[ID]
    ,a.[Activity Number]
)

    --

    select 
    cte.CusID    
    --,cte.[type12_UpdatedBy]
    --,cte.[Updated By Name]
    ,max(cte.[type12_UpdatedDate]) [Max-Updated-By]
    ,cte.[ID]
    ,cte.[Activity Number]
    from cte


CusID    [type12_UpdatedBy]      [ID]      [Activity Number]
=====      =================     ====      ================
1001        01012020 13:06         5          22

Возможно, что-то простое, но я не могу получить его из моего голова, что это такое.

Спасибо

Андрей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...