У меня есть таблица per_all_Assignments_f
с date_from
и date_to
и следующей структурой столбца:
PERSON_ID DATE_FROM DATE_TO GRADE
--------- ------------ ----------- -----
12 01-Jan-2018 28-Feb-2018 c
12 01-Mar-2018 29-Mar-2018 a
12 30-Mar-2018 31-dec-4712 b
13 01-jan-2018 31-dec-4712 c
В приведенной выше таблице я должен получить последнее изменение оценки, т.е. для person_id
'12'
, я должен извлечь обе строки записи: от 30-mar-2018
до 31 dec 4712
, являющуюся последней и одной предыдущей строкой.Какую функцию я могу использовать для этого?
решено с помощью:
SELECT person_id,
asg.grade_id,
lag(asg.grade_id) Over (Partition By person_ID Order By start_date) as prev_ppg_line1,
lag(start_date) Over (Partition By person_ID Order By start_date)
as prev_ppg_effective_start_date,
start_date,
row_Number() Over (Partition By person_ID Order By effective_start_date) as rn
FROM asg_table asg
WHERE person_id = 12;
Этот запрос извлечет 3 строки со всеми предыдущими изменениями.Я хочу получить только последние изменения, не используя максимальную дату вступления в силу