Я хочу установить столбец с именем is_last_status
в моей таблице на основе role_end_date
Например:
Пример 1:
role_end_date role_start_date row_id id is_last_status
null 2020-02-08 7_2020-02-08 7 true
2020-02-07 2019-11-05 7_2019-11-05 7 false
2019-11-05 2019-07-16 7_2019-07-16 7 false
2019-07-16 2019-05-28 7_2019-05-28 7 false
2019-05-24 2019-04-24 7_2019-04-24 7 false
Пример 2 :
role_end_date role_start_date row_id id is_last_status
2020-04-01 2020-02-08 6_2020-02-08 6 true
2020-01-01 2020-01-01 6_2020-01-01 6 false
Кажется, я не могу найти SQL, который может генерировать is_last_status
У меня проблемы с пробелами.
Logi c is: Может быть только 1 строка с is_last_status = True
. Это должна быть самая последняя строка в таблице, основанная на role_start_date
Так что в обоих примерах самая последняя строка - role_start_date = '2020-02-08'
В основном, если строка имеет role_start_date=Max(role_start_date)
, установите для is_last_status значение True, остальные - false. role_start_date
уникален для id
.
Я должен быть что-то с:
SELECT
role_end_date
,role_start_date
,row_id
,id
,LEAD(role_start_date) OVER (PARTITION BY id ORDER BY role_end_date) as is_last_status
FROM my_table
Я использую Presto