Oracle查找重复记录中最大值的记录

摘要 : Oracle to find duplicate records in the record maximum value

分析函数over是Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。
PARTITION BY 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,
有一个表bat22
mat12id  mat12name  bat22id                        price
1101      XXX             200701010111               0.8
1101      XXX             200701010103               0.9
1101      XXX             200701010133               0.8
1102      YYY            200701010112               0.9
1103      ZZZ             200701010113               0.1
我想获得如下结果,唯一的mat12id,如果有重复记录的取最大值那个.
mat12id  mat12name  bat22id                        price
1101      XXX             200701010133               0.8
1102      YYY            200701010112               0.9
1103      ZZZ             200701010113               0.1

select a.*
from
(select bat22.*,
      row_number() over(partition by MAT12ID, MAT12NAME order by bat22id desc) rn
from bat22) a
where a.rn=1;

上一篇 :SQLServer一个数据库最多能建多少张表?
下一篇 :access数据库不支持replace的解决方法