SQL+获取最新日期的行+row_number()时的大小写+重复

SQL+Fetch rows with latest date+Case when row_number()+Duplicates

我有一个 table 字段(id、日期、产品)和以下示例数据

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, 但是对于具有最小日期的特定不同 Id,它将标记为 1,但我需要将特定 Id 和最小日期和产品标记为 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