代码编织梦想

原sql:

select max(id) AS id from (
SELECT C_LOANACCOUNTCODE, c_projectcode,MAX(ID) as id,C_DEPCODE,c_risk_level,c_projectname,C_LOANACCOUNTNAME,c_bistype FROM trisk_apply_his 
  inner join (
  
select REGEXP_SUBSTR(?, '[^,]+', 1, LEVEL, 'i') AS ADDUSERCD 
  from DUAL
  CONNECT BY LEVEL <= LENGTH(?) - LENGTH(replace(?, ',', '')) + 1
  )on instr(',' || c_depcode || ',', ',' || ADDUSERCD || ',') > 0 
  WHERE trisk_apply_his.c_flow_status = 2  AND D_FLOW_FINISH_DATE < to_date('2023-05-23','yyyy-mm-dd')+1

  group by C_LOANACCOUNTCODE, c_projectcode,C_DEPCODE,c_risk_level,c_projectname,C_LOANACCOUNTNAME,c_bistype
  
  ) 
group by c_projectcode,C_LOANACCOUNTCODE

优化后的代码:

SELECT
   max(id) id
    from (
select C_LOANACCOUNTCODE, c_projectcode,c_depcode,id  from (
    SELECT C_LOANACCOUNTCODE, c_projectcode,c_depcode,id ,row_number() over(partition by ID order by C_LOANACCOUNTCODE, c_projectcode ,c_depcode desc) rn FROM trisk_apply_his 
     WHERE trisk_apply_his.c_flow_status = 2  AND D_FLOW_FINISH_DATE < to_date(?,'yyyy-mm-dd')+1
) where rn = 1
    ) trisk_apply_his where exists (
    select * from (
    select REGEXP_SUBSTR(?, '[^,]+', 1, LEVEL, 'i') AS ADDUSERCD 
  from DUAL
  CONNECT BY LEVEL <= LENGTH(?) - LENGTH(replace(?, ',', '')) + 1 
    ) dep  where  instr(',' || trisk_apply_his.c_depcode || ',', ',' || dep.ADDUSERCD || ',') > 0
     )  group by  C_LOANACCOUNTCODE, c_projectcode

减少统计函数的使用可以优化效率

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dandelionoooo/article/details/130889962

plsql为什么连不上远程或本地的oracle,需要做哪些准备?-爱代码爱编程

文件配置解说 tnsnames.ora文件 文件所在地址:ORACLE_HOME\network\admin ORACLE_HOME:Oracle数据库或者客户端软件所在的地址 但是我的在Oracle数据库的目录下,

使用springboot记录用户操作日志-爱代码爱编程

在工作中我们可能会遇到一个需求,就是记录用户的操作信息,接下来使用spring的aop特性实现这一需求 一、首先引入我们必要的一些依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b

oracle ebs 底层分析 v1.01(1)-爱代码爱编程

并发管理器 ORACLE EBS 产品在最初就引入了并发管理器的概念,在用户在 FORM 界面进行了数据的基础录入之后,提交并发请求 在后台异步进行数据的加工以及报表的展现。 本章节基础环境 R12.1.3 DB 11.2.0.3 PSU8 本章节作者 虚名 管理

《oracle高级数据库》复习--客观题-爱代码爱编程

文章目录 Oracle基础,数据库、数据表基本操作与管理约束、查询、视图PL/SQL编程、存储过程、触发器、用户与权限拓展 数据库命令总结 Oracle基础,数据库、数据表基本操作

hive如何实现oracle中复杂的update sql-爱代码爱编程

hive3.1有update语法,但是目前没用还是采用的非事务表,所以我们用其他的办法来解决hive的update问题 简单的update oracle update student  set name='cclovezbf' where id=1 hive   insert overwrite table student s

oracle数据库从入门到精通系列之四:重做日志文件-爱代码爱编程

Oracle数据库从入门到精通系列之四:重做日志文件 一、重做日志文件 二、重做日志文件主要用处 三、在线重做日志 1.数据库高速缓存 2.数据块写入器DBWn

在agileplm项目中使用积木报表-爱代码爱编程

前言 目前市面上有很多比较好的报表工具,但很多收费都比较昂贵,这次找到一个开源免费的报表工具。推荐企业内部开发使用 积木报表虽然没有FineReport那么功能强大,但是目前测试下来也可以满足大部分报表功能。也是能缩短开发周期降低开发成本的。 积木报表的开源协议是LGPL v2.1,如果要商业使用,最好确认一下协议细节,是否存在法律风险。大家也可以直