今天学了一句sql和大家分享一下: 
oracle数据库,情景:表(客户-业务员)中数据都不完全重复,但是可能多条数据其中某些字段重复。我想要取得表中符合条件的记录,但是这些记录中的客户id和客户名称发生重复的话只能留一个。

如上图我想找出“冯冬梅”负责的所有客户,但是由于她属于多个部门,此表存储的是不同部门-不同人员对应的不同客户,所以会有重复数据,那么我想去除重复得到完整的记录,应该怎么办? 
自己尝试了distinct,可是distinct只能晒出重复字段,整条记录就没有办法;使用group by也没有实现,多方查找,sql贡献如下:

select s.* from 
(select t.*,row_number() over (partition by customid order by customid) as group_idx 
from base_custom_to_saler t where t.salername like ‘%冯冬梅%’ and t.entryid = 9) s 
where s.group_idx = 1

row_number()..over(partition by ..order by…) 其逻辑就是对符合某些特点的字段进行分组,排序,然后再取数据 
结果如下图:

谢谢博主,参考上面,我写成自己需要的sql语句:

select id 岗位id
,code,name as 岗位code,org_id 机构id,org_name 机构名称,area 区域, 
names 人员姓名,login_id 工号,
client_id 客户id,client_code 客户代码,client_name 客户名称,post_id 岗位id,
post_name 岗位名称,bank_name 银行名称,
bank_detail_name 开户行,account 银行账号,account_name 银行账号名称,payment_method 支付方式,
group_idx
 from 
(select r.id,r.code,r.name,r.org_id,r.org_name,r.area, 
u.name as names,u.login_id,
i.client_id,i.client_code,i.client_name,i.post_id,
i.post_name,i.bank_name,
i.bank_detail_name,i.account,i.account_name,i.payment_method,
row_number() over (partition by account order by account) as group_idx 
from sec_role r,sec_user u,sec_user_role ur ,sys_payment_info i
where ur.user_id = u.id and ur.role_id = r.id and i.post_id = r.id and ur.begin_date is null
) where group_idx = 1

Oracle查询数据,其中指定字段重复的只取其中一条相关推荐

  1. oracle查询数据令某字段显示固定值

    oracle查询数据令某字段显示固定值 select t.tname 表名称, '固定值' as C from tab t; 注意: C字段 必须是tab表中没有的字段 mysql查询数据令某字段显示 ...

  2. oracle重复数据取只一条,oracle 一个表多条重复记录只取一条的解决方法

    A  表: id     name 1      张三 2      李四 B    表:   id  为  A  表 主键 id    name 1     王五 1      小李 1     王 ...

  3. mybatisPlus中getOne方法如何只取其中一条数据(Wrapper有多条数据时)

    mybatis-plus中getOne方法只能取一条数据,如果取得多条数据会报错,要么换其他方法,要么只选择其中一条,在条件构造器Wrapper结尾加上.last("limit 1" ...

  4. SQL删除表中的重复记录只保留其中一条,最简单的方法:ROW_NUMBER()

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?. 要求:删除表中多余的重复记录,且保留 id 最小的那一条记录. CREATE TABLE #temp_data( id BI ...

  5. mysql查询,inner join有多条符合条件的只取其中一条即可

    需求场景: 给定一批歌曲id,关联其艺人信息,若同一首歌关联上多个艺人,只取其中一个即可 使用group by: select itemid,artistidfrom song a inner joi ...

  6. oracle删除表某一字段,oracle中删除表中某字段出现重复的信息 保留其中一条

    记得以前有个同事问过我这个,说是以前面试的时候碰到的问题,下面我介绍三种方法. 首先我们在这里创建一个测试表添加相应的测试数据. create table test  (id number,name ...

  7. SQl语句查询重复数据 只显示其中一条

    SQL查询重复数据,只显示其中一条 有重复数据主要有以下几种情况: 1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinc ...

  8. Oracle查询数据表数据很少却很慢

    Oracle查询数据表数据很少却很慢(查询空表很很耗时) 有一个表的数据我要去看一下到底数据是什么样子的,所以我就 select * from tableName 这个表.但是执行了90多秒后,没有任 ...

  9. linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中

    #!/bin/sh sqlplus "用户名/密码@数据库"< sqlplus "用户名/密码"< sqlplus -S "用户名/密码& ...

最新文章

  1. 【转帖】计算机世界:后DRM时代的数字音乐博弈
  2. History操作历史记录
  3. 大城市卷不动了,我要回老家!
  4. 修炼Python基础篇-set学习
  5. 守护冬奥安全 从北京网络安全大会开始
  6. Ugly Number leetcode java
  7. 键是什么意思_化学提高不饱和键是什么意思
  8. python求解最大子序列乘积问题,子序列可连续也可不连续
  9. C# ObservableCollection集合排序
  10. <自由之路>LeetCode每日一题(DFS + 记忆化搜索)
  11. H3C模拟器配置VLAN
  12. 用 Python 实现武科大教务处自动抢课
  13. 计算机原理处理器,多处理器结构-微计算机原理-电子发烧友网站
  14. 风湿与类风湿的关系以及风湿病涉及基因突变与基因甲基化的文献收集(仍在更新。。。)
  15. 【云原生 | Envoy 系列】--Envoy Http Ingress,Egress,front Proxy静态配置
  16. 用pandas生成excel文件示例,并调整excel的格式或样式
  17. 三维激光扫描仪点云数据处理与建模
  18. backface-visibility
  19. 电磁流量计的分类和应用
  20. 使用 MEAN 进行全栈开发基础篇——4、接着前面玩儿添加

热门文章

  1. python接口自动化:自动获取cookie
  2. 民间美术与民俗的关系
  3. 【智能制造】转型“智造”:工业互联网重塑制造业
  4. 计算机课作业要求做一张简报,教案作业检查简报模板
  5. 【SSRF-01】服务器端请求伪造漏洞原理及利用实例
  6. 推荐算法的准确度评价指标:
  7. 狂神docker笔记
  8. 内网本地和外网无线同时存在,避免手动切换的办法。
  9. 经营计划模拟沙盘实现预见未来
  10. 最全的python安装包!!快来啊!!!