我有一个由以下
组成的数据集ID SubID
1 1
1 2
2 1
3 1
我想要第三列基本上标记第一个ID,并忽略任何后续相同的ID 本质上,某人(最终用户)想要保留详细信息,但也总结了excel中的唯一ID
ID SubID ident
1 1 1
1 2 0
2 1 1
3 1 1
我怀疑我可以在这里使用rank
功能但是会感激任何提示
答案 0 :(得分:1)
您可以使用row_number()
:
select t.*,
(case when row_number() over (partition by id order by subid) = 1
then 1 else 0
end) as ident
from t;
根据您的示例数据,这个更简单的版本可以使用:
select t.*, (case when subid = 1 then 1 else 0 end) as ident
from t;
如果您的所有数据都是如此,那么甚至可能不需要额外的列。用户可以使用sumif()
或countif()
在Excel中执行条件逻辑。
答案 1 :(得分:1)
没有RANK,但是ROW_NUMBER:
select ID, SubID,
case when ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SubID) = 1
then 1
else 0
end
from tab