Oracle SQL - 根据列获取最大值

Oracle SQL - Get max based on Column

我有以下 table:

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 字段带来一条记录。

一个典型的路线是建立一个递增的计数器,按 column_you_want_to_max_by 的顺序递减,每 column_that_defines_the_group 重新启动一次。然后,您可以 select 只有那些 counter=1

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

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