文章目录
- 前言
- 一、需求描述
- 二、技术要点
- 三、解决方案
- 四、效果展示
前言
【帆软FineReport】 聚焦企业级数据可视化与报表开发。本专栏深入解析 FineReport 与 FineBI 核心技巧,涵盖复杂报表设计、参数联动、填报功能及大屏可视化(决策平台)。
拒绝空谈理论,专注解决数据孤岛、报表自动化及性能优化等企业痛点。我将分享多年沉淀的帆软开发套路与 SQL 优化经验,助你快速从“取数工具人”进阶为“数据架构师”。关注我,用报表驱动业务增长!
一、需求描述
分类汇总报表,计算复卷率。
二、技术要点
${cboMachineId}:输入框传参
COALESCE:SQL 中用于处理 NULL 值 的核心函数,它返回参数列表中第一个非空(NOT NULL)的值。如果所有参数都为 NULL,则返回 NULL。
三、解决方案
数据集脚本:
WITH-- 淋膜产出lm_output_linksas(selecttax0009.C_GROUP_LINE,top3230.*fromTop_3230 top3230innerjointax_0009 tax0009ontax0009.C_MACHINE_CD=top3230.C_MACHINE_IDinnerjointop_3240 top3240ontop3240.C_PAPERROLL_NO=top3230.C_PAPERROLL_NOwheretop3230.C_PROC_CD='10028'andtop3240.C_PAPERROLL_NOlike'L%'and(tax0009.C_GROUP_LINE='${cboMachineId}'or'${cboMachineId}'='')and(top3230.C_CLASS_GROUP='${cboClassGroup}'or'${cboClassGroup}'='')andtop3230.D_OUTPUT_TIME>'${dateEditor0}'ANDtop3230.D_OUTPUT_TIME<='${dateEditor1}'),-- 淋膜产出汇总lm_tableas(selectop.D_OUTPUT_TIME,op.C_GROUP_LINE,op.C_CLASS_GROUP,count(1)lmjs,sum(N_WGT)lmwgtfromlm_output_links opgroupbyop.D_OUTPUT_TIME,op.C_GROUP_LINE,op.C_CLASS_GROUP),-- 复卷产出明细fj_tableAS(selectmm.D_OUTPUT_TIME,mm.C_GROUP_LINE,mm.C_class_group,count(1)asfjjs,sum(N_WGT)asfjwgtfrom(selectdistinctC.C_BAR_CODE,c.D_OUTPUT_TIME,tax0009.C_GROUP_LINE,a.C_class_group,c.N_WGTfromtop_3240 ainnerjointop_3130 bona.C_BAR_CODE=b.C_OLD_BAR_CODEinnerjointop_3240 conb.C_OUTPUT_NO=c.C_OUTPUT_NOinnerjointop_3230 dond.C_BAR_CODE=c.C_BAR_CODEinnerjointax_0009 tax0009ontax0009.C_MACHINE_CD=a.C_MACHINE_IDwherec.C_PROC_CD='10004'ANDd.C_WORK_TYPE='复卷'and(tax0009.C_GROUP_LINE='${cboMachineId}'or'${cboMachineId}'='')and(a.C_CLASS_GROUP='${cboClassGroup}'or'${cboClassGroup}'='')andc.D_OUTPUT_TIME>'${dateEditor0}'ANDc.D_OUTPUT_TIME<='${dateEditor1}')mmgroupbymm.D_OUTPUT_TIME,mm.C_GROUP_LINE,mm.C_class_group),-- 最终结果,合并淋膜和复卷数据result_tableas(SELECTCOALESCE(lm.D_OUTPUT_TIME,fj.D_OUTPUT_TIME)ASD_OUTPUT_TIME,COALESCE(lm.C_GROUP_LINE,fj.C_GROUP_LINE)ASC_GROUP_LINE,COALESCE(lm.C_CLASS_GROUP,fj.C_CLASS_GROUP)ASC_CLASS_GROUP,COALESCE(lm.lmjs,0)ASlmjs,COALESCE(lm.lmwgt,0)ASlmwgt,COALESCE(fj.fjjs,0)ASfjjs,COALESCE(fj.fjwgt,0)ASfjwgtFROMlm_table lmLEFTJOINfj_table fjONlm.D_OUTPUT_TIME=fj.D_OUTPUT_TIMEANDlm.C_GROUP_LINE=fj.C_GROUP_LINEANDlm.C_CLASS_GROUP=fj.C_CLASS_GROUP),result_table1as(selectt.d_output_time,t.c_group_line,t.c_class_group,sum(t.lmjs)lmjs,sum(t.fjjs)fjjs,sum(t.lmwgt)lmwgt,sum(t.fjwgt)fjwgtfromresult_table tgroupbyt.d_output_time,t.c_group_line,t.c_class_group)select*,(selectsum(t2.fjjs)/sum(t2.lmjs)fromresult_table1 t2wheret2.d_output_time=t1.d_output_timeandt2.c_group_line=t1.c_group_line)aslmlvfromresult_table1 t1orderbyt1.d_output_time,t1.c_group_line,t1.c_class_group样式布局