ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【帆软】固定列统计报表

【帆软】固定列统计报表

系列文章

【Oracle】数据库服务器限制ip访问
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122220930

【Oracle】Excel导入数据教程
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118722756

【Oracle】数据库还原教程_数据泵
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118054855

【SQL】如何查询表字段并识别主键
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110820405

【SQL】outer apply的用法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/79903489

【SQL】多表连接重复数据处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/79903619

MySQL安装教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520

MySQL卸载教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129279265

【MySQL】group by分类汇总,如何增加“总计”字段?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128217837

【MySQL】WITH CHECK OPTION的用法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128147196

【MySQL】使用存储过程插入千万级数据如何提升效率?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/77728189

【MySQL】数据库表行列转置的实现
本文链接:https://blog.csdn.net/youcheng_ge/article/details/77625052

【MySQL】查询中,NULL值转换为空字符串
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130381878

文章目录

  • 系列文章
  • 前言
  • 一、技术介绍
  • 二、数据脚本
  • 三、效果展示
  • 四、用法总结

前言

本专栏专注数据库原理与SQL实战。从建表、视图、索引等基础架构,到增删改查(CRUD)、触发器、事务处理及安全授权,全方位覆盖后端必备技能。拒绝碎片化学习,系统掌握嵌入式SQL与企业级数据操作。对内容感兴趣?持续关注不迷路,任何疑问欢迎评论或私信探讨!

一、技术介绍

视图的定义:

视图不是真实存在的基本表,而是一个虚拟表

二、数据脚本

WITH-- 淋膜产出output_linksas(selecttax0009.C_PLANT_CD,tax0009.C_GROUP_LINE,top3230.*fromTop_3230 top3230innerjointax_0009 tax0009ontax0009.C_MACHINE_CD=top3230.C_MACHINE_IDwhere(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_output_linksas(selectop.*fromoutput_links opinnerjointop_3240 top3240ontop3240.C_PAPERROLL_NO=op.C_PAPERROLL_NOwhereop.C_PROC_CD='10028'andtop3240.C_PAPERROLL_NOlike'L%'),-- 淋膜产出汇总lm_tableas(selectop.C_PLANT_CD,op.D_OUTPUT_TIME,op.C_MACHINE_ID,op.C_CLASS_GROUP,count(1)lmjs,sum(N_WGT)lmwgt,op.C_GROUP_LINEfromlm_output_links opgroupbyop.C_PLANT_CD,op.C_MACHINE_ID,op.C_CLASS_GROUP,op.D_OUTPUT_TIME),-- 复卷产出明细fj_tableAS(selectmm.D_OUTPUT_TIME,mm.C_class_group,mm.C_MACHINE_ID,count(C_PAPERROLL_NO)asfjjs,sum(N_WGT)asfjwgtfrom(selectdistincta.C_MACHINE_ID,a.C_class_group,a.C_PAPERROLL_NO,c.D_OUTPUT_TIME,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_CODEwherec.C_PROC_CD='10004'AND/*c.C_MACHINE_ID NOT in ('JXFJ03','JXFJ06','JXFJ07') and*/d.C_WORK_TYPE='复卷'andEXISTS(select1fromlm_table lmwherelm.c_machine_id=a.C_MACHINE_IDandlm.c_class_group=a.C_CLASS_GROUPandlm.d_output_time=c.D_OUTPUT_TIME))mmgroupbymm.D_OUTPUT_TIME,mm.C_class_group,mm.C_MACHINE_ID),-- 最终结果,合并淋膜和复卷数据result_tableas(SELECTlm.C_PLANT_CDASC_PLANT_CD,COALESCE(lm.D_OUTPUT_TIME,fj.D_OUTPUT_TIME)ASD_OUTPUT_TIME,COALESCE(lm.C_MACHINE_ID,fj.C_MACHINE_ID)ASC_MACHINE_ID,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)ASfjwgt,fj.C_MACHINE_IDas'fjjt',lm.c_group_lineFROMlm_table lmLEFTJOINfj_table fjONlm.D_OUTPUT_TIME=fj.D_OUTPUT_TIMEANDlm.C_MACHINE_ID=fj.C_MACHINE_IDANDlm.C_CLASS_GROUP=fj.C_CLASS_GROUP),result_table1as(selectt.c_group_line,t.c_class_group,t.d_output_time,sum(t.lmjs)lmjs,sum(t.fjjs)fjjs,sum(t.lmwgt)lmwgt,sum(t.fjwgt)fjwgtfromresult_table tgroupbyt.c_group_line,t.c_class_group,t.d_output_time)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--------------------------------这2个字段是原纸卷,也就是淋膜机的,目前你写的是分条机的COrginMachineId原纸卷产线 COrginClassGroup原纸卷班组 COrginPaperrollNo原纸卷编号 fjjs件数 fjwgt重量-- 复卷,小复卷产出的日期,淋膜机的班组selectcount(1),sum(N_WGT)from(selectdistinctC.C_BAR_CODE C_BAR_CODE,c.N_WGT N_WGT,a.C_CLASS_GROUPfromtop_3240 a-- 原纸信息innerjointop_3130 bona.C_BAR_CODE=b.C_OLD_BAR_CODEinnerjointop_3240 conb.C_OUTPUT_NO=c.C_OUTPUT_NO-- 产出,分条innerjointop_3230 DonC.C_BAR_CODE=D.C_BAR_CODEinnerjointax_0009 tax0009ontax0009.C_MACHINE_CD=a.C_MACHINE_IDwhere1andc.C_PROC_CD='10004'andD.C_WORK_TYPE='复卷'andtax0009.C_GROUP_LINE='JXLM07'andc.D_OUTPUT_TIME>'2026-05-02'andc.D_OUTPUT_TIME<='2026-05-03'anda.C_CLASS_GROUP='B')a1;selectC_GROUP_LINE,t.*fromtax_0009 t---------------调整后的取数(casewhen'${cboMachine}'!=''thenFIND_IN_SET(t4.C_GROUP_LINE,'${cboMachine}')>0else'${cboMachine}'=''end)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----------------------脚本验证WITH-- 淋膜产出lm_output_linksas(selecttax0009.C_PLANT_CD,tax0009.C_GROUP_LINE,top3230.D_OUTPUT_TIME,top3230.C_CLASS_GROUP,top3230.N_WGTfromTop_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='JXLM07')and(top3230.C_CLASS_GROUP='B')andtop3230.D_OUTPUT_TIME>'2026-05-02'ANDtop3230.D_OUTPUT_TIME<='2026-05-03'),-- 淋膜产出汇总lm_tableas(selectop.C_PLANT_CD,op.D_OUTPUT_TIME,op.C_GROUP_LINE,op.C_CLASS_GROUP,count(1)lmjs,sum(N_WGT)lmwgtfromlm_output_links opgroupbyop.C_PLANT_CD,op.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='JXLM07')and(a.C_CLASS_GROUP='B')andc.D_OUTPUT_TIME>'2026-05-02'ANDc.D_OUTPUT_TIME<='2026-05-03')mmgroupbymm.D_OUTPUT_TIME,mm.C_GROUP_LINE,mm.C_class_group),-- 最终结果,合并淋膜和复卷数据result_tableas(SELECTlm.C_PLANT_CDASC_PLANT_CD,COALESCE(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

三、效果展示

四、用法总结

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进