【问题标题】:Oracle SQL - Get max based on ColumnOracle SQL - 根据列获取最大值
【发布时间】:2021-09-06 08:19:34
【问题描述】:

我有下表:

DOA_MAINT

SR_NO  ITEM  LINE_NO  TYPE
100    A10     1       98
100    A10     2       94
200    A20     1       77
200    A20     2       98
200    A20     3       56

我需要结果为:

SR_NO  ITEM  LINE_NO  TYPE
100    A10     2       94
200    A20     3       56

对于每个 SR_NO,根据 LINE_NO 字段带来一条记录。

【问题讨论】:

    标签: sql oracle max


    【解决方案1】:

    一种典型的方法是建立一个递增计数器,以column_you_want_to_max_by 的降序排列,每column_that_defines_the_group 重新启动一次。然后,您可以只选择 counter=1 的那些行

    SELECT * FROM
    (
      SELECT *, ROW_NUMBER() OVER(PARTITION BY sr_no ORDER BY line_no DESC) rn
    ) x
    WHERE rn = 1
    

    如果有两个具有相同的最大值,这种方式会返回一个随机的单行号。还有其他方法,例如将经典的 max line_no/groupby sr_no 作为子查询并重新加入,如果有两个 line_no 是最大值,则将返回两行

    【讨论】:

      猜你喜欢
      • 2013-03-18
      • 1970-01-01
      • 2012-03-24
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2020-11-18
      相关资源
      最近更新 更多