У меня есть таблица с полями (идентификатор, дата, продукт) с приведенными ниже образцами данных
id date Product current_Flag Expected_flag
14834 2019-01-03 00:00:00 A 1 1
14834 2019-01-31 00:00:00 B 0 0
14834 2019-02-28 00:00:00 C 0 0
14834 2019-03-30 00:00:00 C 0 0
14834 2019-01-03 00:00:00 D 0 1
Я пробую case when row_number() over (partition by id order by date) = 1 then 1 else 0 end as flag
,
Но для определенного отдельного идентификатора с минимальной датой он получает флаг как 1, но мне нужно пометить как для определенного идентификатора и минимальной даты, а продукт как 1 флаг, как показано в Expected_flag
case when row_number() over (partition by id order by date) = 1 then 1 else 0 end as flag
Вместо этого вам нужно dense_rank()
:
case when dense_rank() over (partition by id order by date) = 1 then 1 else 0 end as Expected_flag