我有一个重复记录的表,例如具有相同帐号的多个记录。像这样
现在,我只想选择那些满足以下条件优先级的记录id:
在这里,我们将必须对帐号进行分组并执行上述条件。 我只希望满足上述条件的具有唯一帐号的单条记录。
条件应优先考虑
答案 0 :(得分:1)
我认为您有一个优先级查询,您希望根据自己的各种规则,每acct_nbr
行一行。
对于这类问题,row_number()
非常方便:
select t.*
from (select t.*,
row_number() over (partition by acct_nbr
order by (case when prim_cust = 'X' then 1 else 2 end),
(case when dept_id is not null then 1 else 2 end),
id
) as seqnum
from t
) t
where seqnum = 1;