SQL+获取具有最新日期的行+row_number()+重复时的情况
Posted
技术标签:
【中文标题】SQL+获取具有最新日期的行+row_number()+重复时的情况【英文标题】:SQL+Fetch rows with latest date+Case when row_number()+Duplicates 【发布时间】:2019-05-28 10:03:01 【问题描述】:我有一个表格,其中包含以下示例数据的字段(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
【问题讨论】:
【参考方案1】:你需要 dense_rank()
代替:
case when dense_rank() over (partition by id order by date) = 1 then 1 else 0 end as Expected_flag
【讨论】:
以上是关于SQL+获取具有最新日期的行+row_number()+重复时的情况的主要内容,如果未能解决你的问题,请参考以下文章