SQL Таблица истории пользователей, Получить последнее обновление СПЕЦИФИЧЕСКОГО ПОЛЯ

enter image description here

У меня есть такая таблица user_history. Каждый раз, когда моя таблица users обновляется, записи удаляются и здесь. Как я могу получить дату, когда мой пользователь обновил информацию о своей последней зарплате, то есть 2.01.2022, с помощью SQL? Мне нужно получить дату, когда он перешел от 200 к 300 (денежное поле), поэтому "2.01.2022"

Мне нужно сделать это с помощью DJANGO ORM, но я не могу сделать даже более нормальный SQL запрос.

Я пытался использовать методы sql lag, lead, но у меня ничего не получилось.

Два уровня оконных функций, один для поиска изменений, другой для получения изменения даты:

drop table #temp
select 1 as user_id,300 money,'03-01-2022' as update_date into #temp
union all
select 1 as user_id,300 money,'02-01-2022' as update_date
union all
select 1 as user_id,200 money,'01-01-2022' as update_date
union all
select 1 as user_id,200 money,'03-05-2022' as update_date

select user_id,money,update_date from 
(select t.*,ROW_NUMBER() over(order by cast(update_date as date)) as row_num from 
(select *,lag(money) over(order by cast(update_date as date)) prv_date from #temp ) t
where money<> prv_date) a
where a.row_num=1
Вернуться на верх