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
我有一个 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