【问题标题】:Oracle/SQL - Removing duplicate entries based on order?Oracle/SQL - 根据顺序删除重复条目?
【发布时间】:2020-07-15 00:33:30
【问题描述】:

我有以下“基线名称”、“版本”的结果集

每个基线条目在结果集中都有来自其下方基线的重复行。我只想保留看到的“版本”的第一个实例(从基线 1 开始并进行处理),因此结果如下所示:

有没有人有关于如何做到这一点的提示?

谢谢你, 马特

【问题讨论】:

  • 没有“第一”,除非一列指定了顺序。 SQL 表表示 无序 集。

标签: sql oracle group-by greatest-n-per-group


【解决方案1】:

您想要每个版本的最低基线:

select min(baseline), version
from mytable
group by version
order by baseline desc, version asc;

(只要可以订购基线和版本就可以使用。如果您有基线字符串,例如“baseline 1”、“baseline 2”、...“baseline 10”,那么这不起作用,例如“baseline 10”按字母顺序位于“baseline 1”和“baseline 2”之间。)

【讨论】:

    【解决方案2】:

    假设您有一个排序列(例如,id),您可以使用row_number()

    select *
    from (
        select t.*, row_number() over(partition by version order by id) rn
        from mytable t
    ) t
    where rn = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      相关资源
      最近更新 更多