我有一个具有以下属性的数据集: -ID不是唯一的,并且具有多行 -每个ID都有一个不同的日期,称为“开始日期”
我正在尝试添加一个标记(Y / N),以根据最早的日期确定要使用的ID行。
这是我到目前为止所拥有的:
SELECT *,
min(Start_Date) OVER (PARTITION BY ID) AS FirstEntryFlag,
From `table`
有人可以给我指导我如何实现这一目标吗?谢谢
答案 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
不是必需的。仅条件表达式可以返回有效值。