首页 > 解决方案 > 唯一 ID 的第一个实例时的情况

问题描述

我在 Snowflake 中,并试图在列中标记唯一 ID 的第一次出现。我一直在玩 first_value 但并没有真正到达任何地方。

所以我的数据看起来像这样:

ID Date
123 1/2019
123 2/2019
123 3/2019
234 2/2019
234 3/2019

理想情况下,我想要这样的东西:

ID Date    First?
123 1/2019 1
123 2/2019 0
123 3/2019 0
234 2/2019 1
234 3/2019 0 

我该如何做到这一点?

标签: snowflake-cloud-data-platform

解决方案


你想要ROW_NUMBER

SELECT 
   ID, 
   Date, 
   IFF(ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date) = 1, 1, 0) AS First
FROM 
   schema.table
ORDER BY ID, Date
;

这将检查当前行是否是 ID 的第一个日期,如果是,则分配值 1(否则为 0)。


推荐阅读