帆软报表SQL怎么优化下,现在的SQL执行效率太低了,有时候都超时了

dyt0801 2021-11-05 09:58:53
select 
cc.科室 科室,
sum(cc.本月累计) 本月累计,
sum(cc.全部累计) 全部累计,
sum(cc.本月推荐累计) 本月推荐累计,
sum(cc.全部推荐累计) 全部推荐累计
 from 
(select 
bb.科室,
sum(bb.本月累计) 本月累计,
sum(bb.全部累计) 全部累计,
sum(bb.本月推荐累计) 本月推荐累计,
sum(bb.全部推荐累计) 全部推荐累计
 from 
(select 
${if(fl=1,"decode(ks.chinese_name,null,'挂号未就诊','药剂科','便民药房','便民药房门诊','便民药房',ks.chinese_name)||' '||decode(hrm.employee_name,null,'挂号未就诊',hrm.employee_name)","decode(ks.chinese_name,null,'挂号未就诊','药剂科','便民药房','便民药房门诊','便民药房',ks.chinese_name)")} 科室,
count(distinct case when to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date('${starttime} ','yyyy-mm-dd')
and to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.id end) 本月累计,
count(distinct case when to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date(to_char(to_date('${starttime} ','yyyy-mm-dd'),'yyyy')||'01'||'01','yyyy-mm-dd')
and to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.id end) 全部累计,

count(distinct case when to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date('${starttime} ','yyyy-mm-dd')
and to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.zyid end) 本月推荐累计,
count(distinct case when to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date(to_char(to_date('${starttime} ','yyyy-mm-dd'),'yyyy')||'01'||'01','yyyy-mm-dd')
and to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.zyid end) 全部推荐累计
  from
(select 
opr.id id,
ipi.id zyid,
ipi.registration_date djsj,
opr.registration_date sj,
opr.clinic_dept_id kdks,
nvl(opc.doctor_id,opr.doctor_id) kdys
 from opr_registration opr
left join opr_registration_d oprd on oprd.opr_registration_id=opr.id
left join opc_registration opc on opc.opr_registration_id=opr.id
left join hrm_employee hrm on hrm.id=opr.doctor_id
left join ipi_registration ipi on ipi.ipi_doctor_id=hrm.id
and ipi.s_brztbh_dm!='70'
where opr.id not in (select dd.opr_registration_id from opr_registration_d dd where dd.registration_d_id is not null )
--and opc.department_id!='bb8c2cd44d8080819c90'
)aa
left join opr_clinic_department ks on ks.id=aa.kdks
left join hrm_employee hrm on aa.kdys=hrm.id
group by ks.chinese_name,hrm.employee_name
)bb
group by bb.科室


union all

select 
bb.科室,
sum(bb.本月累计) 本月累计,
sum(bb.全部累计) 全部累计,
sum(bb.本月推荐累计) 本月推荐累计,
sum(bb.全部推荐累计) 全部推荐累计
 from 
(select 
${if(fl=1,"decode(dpte.department_chinese_name,null,'挂号未就诊','药剂科','便民药房','便民药房门诊','便民药房',dpte.department_chinese_name)||' '||decode(hrm.employee_name,null,'挂号未就诊',hrm.employee_name)","decode(dpte.department_chinese_name,null,'挂号未就诊','药剂科','便民药房','便民药房门诊','便民药房',dpte.department_chinese_name)")} 科室,
count(distinct case when to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date('${starttime} ','yyyy-mm-dd')
and to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.id end) 本月累计,
count(distinct case when to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date(to_char(to_date('${starttime} ','yyyy-mm-dd'),'yyyy')||'01'||'01','yyyy-mm-dd')
and to_date(to_char(aa.sj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.id end) 全部累计,

count(distinct case when to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date('${starttime} ','yyyy-mm-dd')
and to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.zyid end) 本月推荐累计,
count(distinct case when to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')>=to_date(to_char(to_date('${starttime} ','yyyy-mm-dd'),'yyyy')||'01'||'01','yyyy-mm-dd')
and to_date(to_char(aa.djsj,'yyyy-mm-dd'),'yyyy-mm-dd')<=to_date('${endtime} ','yyyy-mm-dd') then aa.zyid end) 全部推荐累计
  from
(select 
opr.id id,
ipi.id zyid,
ipi.registration_date djsj,
opr.registration_date sj,
opc.department_id kdks,
nvl(opc.doctor_id,opr.doctor_id) kdys
 from   opr_registration opr
left join opr_registration_d oprd on oprd.opr_registration_id=opr.id
left join opc_registration opc on opc.opr_registration_id=opr.id
left join hrm_employee hrm on hrm.id=opr.doctor_id
left join ipi_registration ipi on ipi.ipi_doctor_id=hrm.id
and ipi.s_brztbh_dm!='70'
where opr.id not in (select dd.opr_registration_id from opr_registration_d dd where dd.registration_d_id is not null )
and opc.department_id='bb8c2cd44d8080819c90'
)aa
left join hra00_department dpte on dpte.id=aa.kdks
left join hrm_employee hrm on aa.kdys=hrm.id
group by dpte.department_chinese_name,hrm.employee_name
)bb
group by bb.科室
)cc
group by 科室
--${if(px=5,"order by 科室 desc","")}
${if(px=1,"order by 科室,本月累计 desc","order by 科室")}
${if(px=2,"order by 科室,全部累计 desc","")}
${if(px=3,"order by 科室,本月推荐累计 desc","")}
${if(px=4,"order by 科室,全部推荐累计 desc","")}

 

...全文
754 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinger126 2022-04-01
  • 打赏
  • 举报
回复

改用存储过程

内容概要:本文提出了一种基于多时段动态电价的电动汽车有序充电策略优化方法,并通过Matlab代码实现对该策略进行仿真验证。该研究聚焦于缓解大规模电动汽车无序充电对电网造成的峰谷负荷压力,通过设计科学的多时段动态电价机制,引导用户在电网负荷低谷时段充电,从而实现削峰填谷、提升电网运行稳定性与可再生能源消纳能力的目标。文中建立了以电网负荷波动最小化和用户充电成本最低化为双重目标的优化模型,结合实际用电数据开展仿真分析,结果表明该策略能显著降低电网峰谷差,提高电力系统的经济性与运行效率。该资源属于“博士论文复现”系列,强调对高水平学术成果的还原与工程化实践,具有较强的理论深度与应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、智能电网、电动汽车等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并复现已发表于博士论文或高水平期刊中的电动汽车有序充电优化模型;②研究需求响应机制下电价策略对用户充电行为的引导作用与弹性响应特性;③开发基于动态电价的充电管理系统原型,为智慧能源系统与车网互动(V2G)技术提供算法支持与决策依据; 阅读建议:此资源以Matlab代码为核心,建议读者结合文档内容与代码逐行分析,重点关注目标函数构建、约束条件设定及求解器调用过程,同时尝试修改参数或引入新变量以拓展模型适用范围,加深对优化算法与电力市场机制融合的理解。
内容概要:本文针对传统三电平并网逆变器在谐波抑制、电网不平衡适应性及动态响应方面的不足,提出一种基于有源中点箝位(ANPC)三电平拓扑的高性能并网控制策略。通过融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术与电网电压前馈控制,构建“精准同步-扰动补偿-优质调制”的一体化控制体系。ANPC拓扑凭借其开关损耗均衡、中点电位稳定和低输出谐波等优势,为系统提供优良的硬件基础;DPWMA调制在不增加器件开关频率的前提下显著提升等效开关频率,优化并网波形质量;正负序分离锁相技术有效隔离电网负序扰动,保障不平衡工况下的锁相精度与电流对称性;电网电压前馈控制则提前补偿电网扰动,显著增强系统的动态抗扰能力和响应速度。通过Matlab/Simulink搭建仿真模型,在稳态运行、电网不平衡及动态扰动等多种工况下进行验证,结果表明该复合控制策略可大幅降低并网电流谐波含量,提升功率稳定性与系统鲁棒性,适用于复杂电网环境下的大功率高质量并网应用。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、并网逆变器研发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究高电能质量并网逆变器的控制策略设计;②解决弱电网条件下并网系统的稳定性与适应性问题;③掌握DPWMA调制、正负序分离锁相、前馈-反馈复合控制等关键技术的实现方法与协同机制。; 阅读建议:建议结合Matlab/Simulink仿真模型进行实践,重点理解控制策略在不同扰动工况下的响应特性,并可通过修改参数对比传统控制方法,深入掌握复合控制策略的优势与工程应用价值。
内容概要:本文系统研究了在间歇性光伏出力条件下,48V直流母线电压的稳定控制策略及储能系统的双向充放电闭环调控体系。通过Simulink搭建完整的光伏储能直流系统仿真模型,涵盖PV光伏阵列、Boost DC-DC变换器、负载、双向DC-DC变换器与锂离子电池系统,重点实现光伏最大功率点跟踪(MPPT)技术与储能系统协同的削峰填谷控制策略,以解决离网光伏直流微网中存在的功率供需失衡问题。研究深入探讨了电压外环与电流内环的双闭环PI控制结构,确保母线电压稳定,并通过双向DC-DC变换器实现储能电池的智能充放电管理。为进一步提升系统对可再生能源波动性的适应能力,引入多维核密度估计方法生成典型光伏与负荷场景,增强了控制策略的鲁棒性与实用性。; 适合人群:具备电力电子、新能源系统或自动化等相关专业背景,从事微电网、储能控制、光伏系统仿真与能量管理研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于离网或分布式直流微网系统中电压稳定与能量管理策略的设计与验证;②为光伏-储能系统的协同控制、MPPT算法优化、储能充放电调度等提供高保真仿真平台与理论支持;③支撑科研项目申报、高水平论文复现或实际工程项目的系统建模与控制算法开发。; 阅读建议:建议结合Simulink仿真环境动手实践,重点关注MPPT控制模块、双向DC-DC变换器的充放电逻辑及双闭环PI控制器的参数整定过程,同时可拓展引入概率性场景分析或多目标优化算法以进一步提升系统性能与智能化水平。

6,107

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据库报表
社区管理员
  • 数据库报表社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧