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 两行最大值
我有以下 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 两行最大值