【问题标题】:SQL - Manage duplicates using hierarchySQL - 使用层次结构管理重复项
【发布时间】:2022-12-21 21:13:18
【问题描述】:

考虑下表。

Customer Category Key
Ajax VIP 1A
Zeus Retail 2B
Hera Retail 3C
Ajax Retail 1A

请注意重复的 1A 值,它既是 VIP 又是 Retail。

如何使用层次结构管理这些重复项,如果是 VIP,则保留 VIP 并删除零售?

最终结果应该是

Customer Category Key
Ajax VIP 1A
Zeus Retail 2B
Hera Retail 3C

谢谢

我试过这样分配值:

贵宾 = 100 零售= 1

然后按 Key 分组并对新列求和。如果结果在特定范围内 (>100),则客户将获得 VIP,否则将获得零售。最后,原来的 Category 列被删除,取而代之的是 Computed_Category。

寻找更优雅的方法。

【问题讨论】:

    标签: sql duplicates hierarchy


    【解决方案1】:

    您可以使用 row_number 函数,如下所示:

    Select Customer, Category, Key_
    From
    (
      Select *,
        ROW_NUMBER() Over (Partition By Customer Order By Case When Category = 'VIP' Then 1 Else 2 End, Key_) rn
      From table_name
    ) T
    Where rn = 1
    

    demo

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 2017-03-22
      • 2016-10-16
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多