SQL根据最早/最新日期创建标记

时间:2020-06-16 13:27:07

标签: sql

我有一个具有以下属性的数据集: -ID不是唯一的,并且具有多行 -每个ID都有一个不同的日期,称为“开始日期”

我正在尝试添加一个标记(Y / N),以根据最早的日期确定要使用的ID行。

这是我到目前为止所拥有的:

SELECT *,
min(Start_Date) OVER (PARTITION BY ID) AS FirstEntryFlag,
From `table`

有人可以给我指导我如何实现这一目标吗?谢谢

1 个答案:

答案 0 :(得分:0)

这是您想要的吗?

select (case when start_date = min(Start_Date) OVER (PARTITION BY ID) 
             then 1 else 0
        end) as FirstEntryFlag
from t;

如果开始日期的ID重复,并且您只希望标记一行,请使用row_number()

select (case when 1 = row_number() over (partition by id order by Start_Date) 
             then 1 else 0
        end) as FirstEntryFlag
from t;

最后,某些数据库支持布尔类型,因此case不是必需的。仅条件表达式可以返回有效值。