我有一个包含字段(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
关于mysql - SQL+获取最新日期的行+row_number()+重复的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339705/