首先因为需要查询很多字段,也就排除了使用distinct的可能性。

1.1 原始sql

select finalSql.*from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11

1.2 查询结果

很显然存在重复项

1.3 查询总数

2.1 修改sql

select finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码,count(*) as 次数from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11group by finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码order by 次数 desc

2.2 查询结果:

我是根据手机号进行分组的,很显然,这里存在很多的垃圾数据,我们需要将这些相同的数据只保留一条

2.3 查询总的记录数

3.1 因为返回结果并不需要“count(*)” 这个字段,因此在最外层再加一层查询,改进sql如下

select finalSql2.SMS_CONTENT,finalSql2.短信发出类型_批量发出,finalSql2.短信接收方姓名,finalSql2.短信接受方手机号,finalSql2.业务对象ID,finalSql2.区分码from (select finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码,count(*) as 次数from (select '' SMS_CONTENT,'2' as 短信发出类型_批量发出,yqdz.yqdz_hz_mc 短信接收方姓名,casewhen wc.JTDH is not null thenwc.JTDHwhen wc.XIAOLINGTONG is not null thenwc.XIAOLINGTONGwhen wc.SJ is not null thenwc.SJend 短信接受方手机号,'' 业务对象ID,yqdz.org_id 区分码from yongqidizhi yqdzleft join kehuview wcon wc.Y_ID = yqdz.yqdz_kh_idleft join ranqibiao rqbon rqb.RQB_YQDZ_ID = yqdz.yqdz_idwhere (wc.JTDH is not null or wc.XIAOLINGTONG is not null orwc.SJ is not null)and yqdz.yqdz_kh_lx = '2') finalSqlwhere length(trim(finalSql.短信接受方手机号)) = 11group by finalSql.SMS_CONTENT,finalSql.短信发出类型_批量发出,finalSql.短信接收方姓名,finalSql.短信接受方手机号,finalSql.业务对象ID,finalSql.区分码order by 次数 desc) finalsql2

3.2 查询结果

3.3 查询总数

可见总数与第二步一致,并未缺少数据。

总结,因水平问题,在此只考虑最终查询结果符合要求,并未考虑性能、耗时等其他因素,如有需要,后期再做打算。

如有问题,欢迎大家斧正。

转载于:https://www.cnblogs.com/luxd/p/6382963.html

Oracle 查询结果去重保留一项相关推荐

  1. 【转贴】Oracle查询重复数据与删除重复记录方法

    Oracle查询重复数据与删除重复记录方法 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons ...

  2. oracle 查的数据去重复数据,Oracle查询和过滤重复数据

    对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s where s.as_side = ...

  3. oracle 查询日期最大值,sql语句查询每天数据中的最大值

    案例: 创建天气小时表和天气日期表 create table dbo.T_WeatherStreetDataHourly ( ID bigint identity(1, 1), DDATETIME d ...

  4. oracle中sum和count可以嵌套吗_【分享吧】Oracle查询转换

    前言 "查询转换"是Oracle解析SQL语句中重要的步骤.其原理是Oracle在解析时通过对原有SQL的等价改写,以达到较高执行效率的方式. 上图展示了SQL的执行过程,当客户提 ...

  5. oracle查询属主下对象,SQL优化

    Oracle Index Merge 与 and_equal 的变迁 June 8, 2010 and_equal是Oracle支持的一种特定操作,可以将多个单列索引进行合并(Index Merge) ...

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

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

  7. Oracle查询语句及运用语句整理

    基于很久没用到Oracle了最近有点怀念,看了很多博客至此没有看到满意的故此整理,当然这是基础的另外迪卡尔集及函数会后期码上,初学Oracle数据库的人都会经常在一些书籍中或者视频课程中提到几个常用的 ...

  8. Oracle查询字段以外的内容,Oracle查询字段内容为非数字的记录

    今天在一张3W多记录的表里查非数字的异常数据~数据库太水,记录一发,因为2.5使用人员误输入为2..5.... select t.routecardlist_id,trim(translate(RTR ...

  9. oracle 多条件去重,Oracle数据去重

    Oracle数据去重保留一条 多个条件分组 delete from M_BASEPRICE_0719_CC m where (m.brand_code,m.supplier_code,m.part_c ...

最新文章

  1. python数据分析基础 余本国_Python数据分析基础
  2. 关于Django中,实现序列化的几种不同方法
  3. 使用gui调试x86系统的汇编代码
  4. 大道至简读书笔记02
  5. Exynos4412 内核移植(二)—— 内核编译过程分析
  6. D5000工作站服务器型号,【戴尔Precision T5820参数】戴尔Precision T5820系列工作站参数-ZOL中关村在线...
  7. 【整理】Laravel中Eloquent ORM 关联关系的操作
  8. python3字典值重复统计_如何从字典列表中获取值-python 3.7.1[重复]
  9. 斐讯K2 A6版SZU校园网刷机方法
  10. html实现图片轮播切换箭头,最简单jquery实现带左右箭头和数字焦点的图片轮播...
  11. 机器人操作空间轨迹规划 -- 姿态规划
  12. 计算机出现蓝屏怎么解决,教你电脑出现蓝屏是怎么回事
  13. Zcash中的signatures
  14. flutter-拨打电话功能
  15. 【ZJOI2017】仙人掌
  16. python colormap_Python colors.LinearSegmentedColormap方法代码示例
  17. python as f是什么意思_Python中 with open(file_abs,'r') as f: 的用法以及意义
  18. 大学生没有项目经验该怎么拿测开岗位的office?来看话梅怎么说
  19. docker privileged参数解释
  20. 简单了解------网络搭建

热门文章

  1. c++设计一个不能被继承的类
  2. Microsoft System Center 2012:将系统管理带入云中
  3. XPath实例教程十四、following-sibling轴
  4. Python指南--深入流程控制
  5. 大数据教程之大数据处理流程
  6. Kafka文件存储机制及offset存取
  7. Lesson11 vSphere VUM
  8. ORACLE用户权限管理笔记整理
  9. 忘了root口令解决方法
  10. poj3191(负进位制)