zoukankan      html  css  js  c++  java
  • Oracle【rank】数据库多条记录分组&每组取一条

    背景

    有功能需要多表联合查询,有部分结果看起来出现两次或更多次

    排查

    发现是Left join右表存在多条记录

    需求

    右表中多条记录需要先分组,取分组中第一条,才是需要的连接数据

    方案

    使用Oracle自带函数rank()

    --product_code 分组字段名
    --model 排序字段名,识别你需要的数据
    --r=1 拿每组中的第一条
    --and product_code = 'KZ070Q' 可以增加更多的范围条件
    select *
      from (select rank() over(partition by product_code order by model) r, a.*
              from MBOM a)
     where r = 1
       and product_code = 'KZ070Q'
    

     

    完成

    以上,解决问题,满足需求。

    (适用)

    多表联合查询,发现数据重复出现,可以考虑联合表是否出现多条记录,是否分组获取第一条,就能满足需求,那么,上面的方案,就能解决这个重复数据问题。

  • 相关阅读:
    bzoj3110
    idea 设置系列 各种乱码
    vim 系列
    idea 神键
    简单工厂,工厂方法,抽象工厂
    log4 按包进行日志输出
    maven依赖本地宝
    kafka 理论学习
    kafka windows环境搭建 测试
    linux 查找文件的命令
  • 原文地址:https://www.cnblogs.com/zl0828/p/12606391.html
Copyright © 2011-2022 走看看