SQL + выборка строк с последней датой + случай, когда row_number () + дубликаты - PullRequest
0 голосов
/ 28 мая 2019

У меня есть таблица с полями (идентификатор, дата, продукт) с данными ниже образца

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

1 Ответ

2 голосов
/ 28 мая 2019

Вам нужно dense_rank() вместо:

case when dense_rank() over (partition by id order by date) = 1 then 1 else 0 end as Expected_flag
...