【问题标题】:Select the unique records from duplicates record using group by使用 group by 从重复记录中选择唯一记录
【发布时间】:2020-03-17 19:05:19
【问题描述】:

我有一个包含重复记录的表,例如多个具有相同帐号的记录。像这样

现在我只想选择满足以下条件优先级的记录 id:

  1. 选择prim_cust为X的账号
  2. 如果 X 为空,则选择 dept_id 不为空的帐号。
  3. 两者都为空,我们应该选择 min(id)。

在这里,我们必须对帐号进行分组并执行上述条件。 我只想要满足上述条件的具有唯一帐号的单条记录。

条件优先

【问题讨论】:

标签: sql group-by duplicates


【解决方案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;

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 2023-03-17
    • 1970-01-01
    • 2023-03-28
    • 2022-08-11
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多