redshift 根据其他列创建一个具有值的字段

redshift create a field with value based on other column

我需要根据第二列的值创建一个标志字段。

ID1     ID2     FLAG
1       19      1
1       37      1
2       19      2
2       37      2
2       98      1
3       19      1
4       37      1
5       19      1
5       37      1
6       37      2
6       98      1

即当 ID2 为 98 则标志为 1 否则当他们在 19、37 然后 1 但是当 ID1 拥有所有 ID2 时,98 将获得优先级,就像上面示例中的 ID1 = 2 一样。

到目前为止,我正在尝试分组,获取 max() 然后设置值。 我尝试了 RANK() 方法,但 19、37 的排名应该相同,我不确定该怎么做。

提前致谢..

如果我没理解错的话,你想要dense_rank():

select t.*,
       dense_rank() over (partition by id1
                          order by (id2 = 98) desc
                         ) as flag
from t;