У меня есть 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
Возможно, что-то простое, но я не могу получить его из моего голова, что это такое.
Спасибо
Андрей