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

作者: Robin 分类: 数据库应用 发布时间: 2013-04-04 18:05

分析函数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;

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签云