oracle查询的数据如何去重显示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle查询的数据如何去重显示?相关的知识,希望对你有一定的参考价值。

如图中我查询到的数据,前七行都是重复数据,如何能将前七行数据合并显示,后三行数据跟随在其后,即一个产品对应多个库房显示

参考技术A

Oracle 单列去重 显示单行所有列数据

问题:test_table 表中有 a,b,c 三个字段,求根据字段a 去除重复数据,得到去重后的整行数据

根据mysql的经验尝试以下方法均失败

1、使用 distinct 关键字 (oracle查询数据中,不允许非 distinct 标注字段 )

select count(distinct a),a,b,c from test_table;

 

 



2、使用 group by (oracle查询数据中不允许非分组字段)

select a,b,c from test_table group by a;

 

 



解决方案:使用row_number() over( partition by) 方法分组排序

    with temp as (
         select a,b,c from test_table
    )
     
    select a,b,c from (
           select a,b,c,row_number() over (partition by a order by rownum) row_no from temp
    ) where row_no = 1

ps:   with temp as() 括号内的内容 就是查询的sql 结果包含重复数据

row_number() over(partition by 需要检索重复的列 order by 排序的列名)  别名 row_no  ,如果分组存在多条相同值,row_no 从1开始递增,筛选 row_no = 1 ,就取到了只出现一次的数据
 参考:https://blog.csdn.net/u014481096/article/details/82144519

以上是关于oracle查询的数据如何去重显示?的主要内容,如果未能解决你的问题,请参考以下文章

oracle如何查询重复数据然后全部显示,举例:一份Excel中有100条数据,只有10条不同,我一个个

oracle如何查重复数据并显示出来?

oracle 多表多字段去重问题!

如何解决Oracle数据库中重复数据的方法步骤

oracle 去重,并显示所有列

Oracle 单列去重 显示单行所有列数据