活动介绍
file-type

掌握SQLExec:深入学习C语言源码与项目实战

版权申诉

RAR文件

2KB | 更新于2024-11-01 | 79 浏览量 | 0 下载量 举报 收藏
download 限时特惠:#9.90
该项目不仅涵盖了SQL命令操作的实际应用,还是一套完整的C语言源码阅读与分析的实战案例。它为广大C语言学习者提供了一个极佳的学习平台,通过阅读和分析该项目的源码,学习者可以深入理解C语言的实战应用,并提升源码阅读与分析的能力。" 知识点详细说明: 1. SQL命令操作与CMD接口 在Windows操作系统中,CMD(命令提示符)是常用的命令行工具,可以用来执行各种系统命令。SQLExec项目中,使用C语言编写的程序能够与CMD接口交互,执行SQL语句。这涉及到对CMD命令行参数的理解,以及如何通过程序将SQL语句传递给数据库管理系统,并通过CMD执行。 2. C语言源码阅读技巧 C语言源码阅读技巧是开发者必须掌握的基本技能之一。这包括如何逐步理解程序的流程控制结构(例如循环、条件判断和函数调用),如何分析变量的作用域和生命周期,以及如何理解指针、数组和结构体等复杂数据结构的应用。此外,还需要能够解读库函数的使用方法和程序中的宏定义,了解其对程序逻辑的影响。 3. C语言项目实战案例 C语言项目实战案例是检验学习者是否真正理解C语言概念的重要方式。在该项目中,学习者可以接触到实际的项目结构,包括项目的模块划分、接口设计、错误处理、日志记录等。实战案例能够帮助学习者加深对C语言编程范式的认识,并学会如何组织和管理大型代码库。 4. SQL命令基础 了解SQL命令的基础知识对于阅读和分析SQLExec项目至关重要。SQL(Structured Query Language)是一种用于数据库管理和操作的标准编程语言。学习者需要掌握基本的SQL语法,如SELECT、INSERT、UPDATE和DELETE等语句的使用,以及如何通过JOIN操作来联合多个表的数据,以及如何使用WHERE子句来筛选数据。此外,熟悉事务处理、索引和视图的概念也是有益的。 5. 数据库基础 为了深入理解SQLExec项目,学习者还需要具备一定的数据库基础知识,例如关系型数据库的基本原理、数据库设计(如规范化理论),以及如何建立和维护数据库。了解数据库管理系统(DBMS)的工作原理,例如MySQL、PostgreSQL或SQLite等,对于理解SQL命令如何与数据库交互至关重要。 6. 编程调试与测试 在进行C语言源码阅读和分析时,掌握编程调试与测试的技巧也非常重要。调试是识别程序中错误的过程,而测试是验证程序行为是否符合预期的过程。学习者需要了解如何使用调试工具(如GDB)来跟踪程序的执行流程,设置断点,检查变量值,并逐步执行代码以查找和修复问题。此外,学习者应掌握单元测试和集成测试的基本概念,以确保代码质量和项目的稳定性。 综上所述,SQLExec项目为C语言学习者提供了一个宝贵的资源,通过这个项目,不仅可以学习到如何编写和执行SQL命令,还能够通过阅读源码提升对C语言的深入理解,掌握编程调试与测试的实用技巧,并且加深对数据库和SQL命令操作的理解,这对于任何希望在软件开发领域有所建树的学习者来说都是极有价值的学习材料。

相关推荐

filetype

下面是一段完整的AE code,请协助进行优化 /*=========================================/ 任务编号: 说 明: 人员分析报表(优化版) 作 者: 日 期: 2025-07-11 /=========================================*/ /* 声明变量 */ Local JavaObject &reportDefn, &reportRow, &reportRow2; Local number &rowNum, &processInstance, &bColIndex, &count0, &avgCount; Local string &oprid, &runCntlID, &c_gp_rptID, &start, &end, &reportTitle, &FilePath; Local string &aColValue, &bColValue, &prevAColValue, &Start_Dt, &End_Dt, &aColCode, &bColCode; Local SQL &sqlACol, &sqlBCol, &sqlData; Local array of string &bColData, &bColCodes, &aColCodes, &aColValues; Local array of number &monthStartDates, &monthEndDates; /* 初始化变量 */ &processInstance = C_GPANA_AET.PROCESS_INSTANCE.Value; &oprid = C_GPANA_AET.OPRID.Value; &runCntlID = C_GPANA_AET.RUN_CNTL_ID.Value; &c_gp_rptID = C_GPANA_AET.C_GP_RPT_ID.Value; &start = C_GPANA_AET.C_CAL_PRD_ID_BGN.Value; &end = C_GPANA_AET.C_CAL_PRD_ID_END.Value; /* 检查是否有B类操作 */ SQLExec("SELECT COUNT(*) FROM PS_C_GPANA_RPT_OP OP WHERE OP.C_GP_RPT_ID = :1 AND OP.C_GPANA_OPRID = 'B'", &c_gp_rptID, &count); If &count > 0 Then /* 获取期间1-12月 开始、结束日期 */ SQLExec("SELECT A.c_yearcd FROM PS_C_FRZ_CAL_VW A WHERE A.Cal_Prd_Id=:1", &start, &c_yearcd); SQLExec(SQL.C_1_12_GPANA_SQL, &c_yearcd, &start_1, &end_1, &start_2, &end_2, &start_3, &end_3, &start_4, &end_4, &start_5, &end_5, &start_6, &end_6, &start_7, &end_7, &start_8, &end_8, &start_9, &end_9, &start_10, &end_10, &start_11, &end_11, &start_12, &end_12); &reportTitle = "人员分析报表"; &rowNum = 3; /* 数据从第3行开始 */ &prevAColValue = ""; /* 1. 创建报表对象 */ &reportDefn = CreateJavaObject("com.cust.common.poi.ReportDefinition"); &reportDefn.AddSheet(&reportTitle); /* 2. 添加复杂表头行 - 优化为循环生成 */ /* 第一行表头 */ &reportRow = CreateJavaObject("com.cust.common.poi.ReportRow"); &reportRow.addString("组织范围"); /* A1 */ &reportRow.addString("人员类别"); /* B1 */ &reportRow.addString("年度累计"); /* C1-I1 */ /* 添加7个空单元格对应C1-I1 */ For &i = 1 To 6 &reportRow.addString(""); End-For; /* 循环添加12个月的表头 */ For &month = 1 To 12 &reportRow.addString(&month | "月"); /* 月份标题 */ /* 添加6个空单元格 */ For &i = 1 To 6 &reportRow.addString(""); End-For; End-For; &reportDefn.addRow(&reportRow); /* 第二行表头 */ &reportRow2 = CreateJavaObject("com.cust.common.poi.ReportRow"); &reportRow2.addString(""); /* A2 */ &reportRow2.addString(""); /* B2 */ /* 年度累计列标题 */ &reportRow2.addString("年度平均人数"); &reportRow2.addString("期初人数"); &reportRow2.addString("累计新增:新入职人数"); &reportRow2.addString("累计新增:调入人数"); &reportRow2.addString("累计减少:离职人数"); &reportRow2.addString("累计减少:调出人数"); &reportRow2.addString("期末人数"); /* 循环添加12个月的详细列标题 */ For &month = 1 To 12 &reportRow2.addString("月度平均人数"); &reportRow2.addString("月初人数"); &reportRow2.addString("本月新增:新入职人数"); &reportRow2.addString("本月新增:调入人数"); &reportRow2.addString("本月减少:离职人数"); &reportRow2.addString("本月减少:调出人数"); &reportRow2.addString("月末人数"); End-For; &reportDefn.addRow(&reportRow2); /* 合并表头单元格 */ /* 合并A1:A2 */ &reportDefn.mergeCells(0, 1, 0, 0); /* 合并B1:B2 */ &reportDefn.mergeCells(0, 1, 1, 1); /* 合并C1:I1 */ &reportDefn.mergeCells(0, 0, 2, 8); /* 合并各月份标题 */ For &month = 0 To 11 &startCol = 9 + (&month * 7); &endCol = &startCol + 6; &reportDefn.mergeCells(0, 0, &startCol, &endCol); End-For; /* 3. 获取B列所有数据 */ &sqlBCol = CreateSQL("SELECT OP.DESCR, OP.DESCR1 FROM PS_C_GPANA_RPT_OP OP WHERE OP.C_GP_RPT_ID = :1", &c_gp_rptID); &bColData = CreateArrayRept("", 0); &bColCodes = CreateArrayRept("", 0); While &sqlBCol.Fetch(&bColValue, &bColCode) &bColData.Push(&bColValue); &bColCodes.Push(&bColCode); End-While; &sqlBCol.Close(); /* 4. 处理A列数据并填充动态数据 */ &sqlACol = CreateSQL("SELECT L1.DESCR100, L1.SEQNBR FROM PS_C_GPANA_RPT_L1 L1 WHERE L1.C_GP_RPT_ID = :1", &c_gp_rptID); &aColValues = CreateArrayRept("", 0); &aColCodes = CreateArrayRept("", 0); /* 先获取所有A列数据 */ While &sqlACol.Fetch(&aColValue, &aColCode) &aColValues.Push(&aColValue); &aColCodes.Push(&aColCode); End-While; &sqlACol.Close(); /* 处理每行数据 */ For &aIndex = 1 To &aColValues.Len &aColValue = &aColValues [&aIndex]; &aColCode = &aColCodes [&aIndex]; /* 对每个A列值,循环所有B列值 */ For &bIndex = 1 To &bColData.Len /* 创建新行 */ &reportRow = CreateJavaObject("com.cust.common.poi.ReportRow"); /* A列处理(合并效果) */ If &aColValue = &prevAColValue Then &reportRow.addString(""); /* A列留空(模拟合并效果)*/ Else &reportRow.addString(&aColValue); /* A列填入值 */ End-If; /* B列值 */ &reportRow.addString(&bColData [&bIndex]); /* 根据A列和B列值获取动态数据 */ &bColCode = &bColCodes [&bIndex]; /* 年度累计数据 &avgCount-6*/ &reportRow.addString(String(&avgCount)); /* 年度累计数据 - C2:年度平均人数 */ &reportRow.addString(String(&avgCount1)); /* 年度累计数据 - 期初人数 */ &reportRow.addString(String(&avgCount2)); /* 累计新增:新入职人数*/ &reportRow.addString(String(&avgCount3)); /* 累计新增:调入人数*/ &reportRow.addString(String(&avgCount4)); /* 累计减少:离职人数 */ &reportRow.addString(String(&avgCount5)); /* 累计减少:调出人数*/ &reportRow.addString(String(&avgCount6)); /* 期末人数*/ /* 1月数据 &janCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_1, &janCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_1, &end_1, &janCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_1, &end_1, &janCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_1, &end_1, &janCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_1, &janCount6); &janCount = Round((&janCount1 + &janCount6) / 2.0, 0); &reportRow.addString(String(&janCount)); /* 月度平均人数 */ &reportRow.addString(String(&janCount1)); /* 月初人数 */ &reportRow.addString(String(&janCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&janCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&janCount4)); /* 本月减少:离职人数 */ &janCount5 = Abs(&janCount6 - &janCount1 - &janCount2 - &janCount3 - &janCount4); &reportRow.addString(String(&janCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&janCount6)); /* 月末人数 */ /* 2月数据 &febCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_2, &febCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_2, &end_2, &febCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_2, &end_2, &febCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_2, &end_2, &febCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_2, &febCount6); &febCount = Round((&febCount1 + &febCount6) / 2.0, 0); &reportRow.addString(String(&febCount)); /* 月度平均人数 */ &reportRow.addString(String(&febCount1)); /* 月初人数 */ &reportRow.addString(String(&febCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&febCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&febCount4)); /* 本月减少:离职人数 */ &febCount5 = Abs(&febCount6 - &febCount1 - &febCount2 - &febCount3 - &febCount4); &reportRow.addString(String(&febCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&febCount6)); /* 月末人数 */ /* 3月数据 &marCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_3, &marCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_3, &end_3, &marCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_3, &end_3, &marCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_3, &end_3, &marCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_3, &marCount6); &marCount = Round((&marCount1 + &marCount6) / 2.0, 0); &reportRow.addString(String(&marCount)); /* 月度平均人数 */ &reportRow.addString(String(&marCount1)); /* 月初人数 */ &reportRow.addString(String(&marCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&marCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&marCount4)); /* 本月减少:离职人数 */ &marCount5 = Abs(&marCount6 - &marCount1 - &marCount2 - &marCount3 - &marCount4); &reportRow.addString(String(&marCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&marCount6)); /* 月末人数 */ /* 4月数据 &aprCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_4, &aprCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_4, &end_4, &aprCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_4, &end_4, &aprCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_4, &end_4, &aprCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_4, &aprCount6); &aprCount = Round((&aprCount1 + &aprCount6) / 2.0, 0); &reportRow.addString(String(&aprCount)); /* 月度平均人数 */ &reportRow.addString(String(&aprCount1)); /* 月初人数 */ &reportRow.addString(String(&aprCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&aprCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&aprCount4)); /* 本月减少:离职人数 */ &aprCount5 = Abs(&aprCount6 - &aprCount1 - &aprCount2 - &aprCount3 - &aprCount4); &reportRow.addString(String(&aprCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&aprCount6)); /* 月末人数 */ /* 5月数据 &mayCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_5, &mayCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_5, &end_5, &mayCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_5, &end_5, &mayCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_5, &end_5, &mayCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_5, &mayCount6); &mayCount = Round((&mayCount1 + &mayCount6) / 2.0, 0); &reportRow.addString(String(&mayCount)); /* 月度平均人数 */ &reportRow.addString(String(&mayCount1)); /* 月初人数 */ &reportRow.addString(String(&mayCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&mayCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&mayCount4)); /* 本月减少:离职人数 */ &mayCount5 = Abs(&mayCount6 - &mayCount1 - &mayCount2 - &mayCount3 - &mayCount4); &reportRow.addString(String(&mayCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&mayCount6)); /* 月末人数 */ /* 6月数据 &junCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_6, &junCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_6, &end_6, &junCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_6, &end_6, &junCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_6, &end_6, &junCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_6, &junCount6); &junCount = Round((&junCount1 + &junCount6) / 2.0, 0); &reportRow.addString(String(&junCount)); /* 月度平均人数 */ &reportRow.addString(String(&junCount1)); /* 月初人数 */ &reportRow.addString(String(&junCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&junCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&junCount4)); /* 本月减少:离职人数 */ &junCount5 = Abs(&junCount6 - &junCount1 - &junCount2 - &junCount3 - &junCount4); &reportRow.addString(String(&junCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&junCount6)); /* 月末人数 */ /* 7月数据 &julCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_7, &julCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_7, &end_7, &julCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_7, &end_7, &julCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_7, &end_7, &julCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_7, &julCount6); &julCount = Round((&julCount1 + &julCount6) / 2.0, 0); &reportRow.addString(String(&julCount)); /* 月度平均人数 */ &reportRow.addString(String(&julCount1)); /* 月初人数 */ &reportRow.addString(String(&julCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&julCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&julCount4)); /* 本月减少:离职人数 */ &julCount5 = Abs(&julCount6 - &julCount1 - &julCount2 - &julCount3 - &julCount4); &reportRow.addString(String(&julCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&julCount6)); /* 月末人数 */ /* 8月数据 &augCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_8, &augCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_8, &end_8, &augCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_8, &end_8, &augCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_8, &end_8, &augCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_8, &augCount6); &augCount = Round((&augCount1 + &augCount6) / 2.0, 0); &reportRow.addString(String(&augCount)); /* 月度平均人数 */ &reportRow.addString(String(&augCount1)); /* 月初人数 */ &reportRow.addString(String(&augCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&augCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&augCount4)); /* 本月减少:离职人数 */ &augCount5 = Abs(&augCount6 - &augCount1 - &augCount2 - &augCount3 - &augCount4); &reportRow.addString(String(&augCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&augCount6)); /* 月末人数 */ /* 9月数据 &sepCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_9, &sepCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_9, &end_9, &sepCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_9, &end_9, &sepCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_9, &end_9, &sepCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_9, &sepCount6); &sepCount = Round((&sepCount1 + &sepCount6) / 2.0, 0); &reportRow.addString(String(&sepCount)); /* 月度平均人数 */ &reportRow.addString(String(&sepCount1)); /* 月初人数 */ &reportRow.addString(String(&sepCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&sepCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&sepCount4)); /* 本月减少:离职人数 */ &sepCount5 = Abs(&sepCount6 - &sepCount1 - &sepCount2 - &sepCount3 - &sepCount4); &reportRow.addString(String(&sepCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&sepCount6)); /* 月末人数 */ /* 10月数据 &octCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_10, &octCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_10, &end_10, &octCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_10, &end_10, &octCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_10, &end_10, &octCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_10, &octCount6); &octCount = Round((&octCount1 + &octCount6) / 2.0, 0); &reportRow.addString(String(&octCount)); /* 月度平均人数 */ &reportRow.addString(String(&octCount1)); /* 月初人数 */ &reportRow.addString(String(&octCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&octCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&octCount4)); /* 本月减少:离职人数 */ &octCount5 = Abs(&octCount6 - &octCount1 - &octCount2 - &octCount3 - &octCount4); &reportRow.addString(String(&octCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&octCount6)); /* 月末人数 */ /* 11月数据 &novCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_11, &novCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_11, &end_11, &novCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_11, &end_11, &novCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_11, &end_11, &novCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_11, &novCount6); &novCount = Round((&novCount1 + &novCount6) / 2.0, 0); &reportRow.addString(String(&novCount)); /* 月度平均人数 */ &reportRow.addString(String(&novCount1)); /* 月初人数 */ &reportRow.addString(String(&novCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&novCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&novCount4)); /* 本月减少:离职人数 */ &novCount5 = Abs(&novCount6 - &novCount1 - &novCount2 - &novCount3 - &novCount4); &reportRow.addString(String(&novCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&novCount6)); /* 月末人数 */ /* 12月数据 &decCount-6*/ /* 月初人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_12, &decCount1); /* 本月新增:新入职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('HIR','REH') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_12, &end_12, &decCount2); /* 本月新增:调入人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION ='XFR' AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_12, &end_12, &decCount3); /* 本月减少:离职人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.ACTION IN ('TER','RET') AND J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT <=:4 AND J.EFFDT >=:3 AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &start_12, &end_12, &decCount4); /* 月末人数 */ SQLExec("SELECT COUNT(*) FROM PS_JOB J WHERE J.HR_STATUS = 'A' AND J.EMPL_RCD = '0' AND J.EFFSEQ = '0' AND J.Empl_Class IN (" | &bColCode | ") AND J.EFFDT = (SELECT MAX(J2.EFFDT) FROM PS_JOB J2 WHERE J2.EMPLID = J.EMPLID AND J2.EMPL_RCD = J.EMPL_RCD AND J2.EFFDT <=:3) AND j.deptid IN (SELECT T.tree_node_child FROM PS_C_DEPT_TREE_VWA T ,PS_C_GPANA_RPT_L2 A WHERE A.C_GP_RPT_ID = :1 AND A.SEQNBR = :2 AND T.SETID = A.BUSINESS_UNIT AND T.TREE_NODE = A.DEPTID AND T.effdt = (SELECT MAX(T1.EFFDT) FROM PS_C_DEPT_TREE_VWA T1 WHERE T1.setid = T.setid AND T1.effdt <= :3) )", &c_gp_rptID, &aColCode, &end_12, &decCount6); &decCount = Round((&decCount1 + &decCount6) / 2.0, 0); &reportRow.addString(String(&decCount)); /* 月度平均人数 */ &reportRow.addString(String(&decCount1)); /* 月初人数 */ &reportRow.addString(String(&decCount2)); /* 本月新增:新入职人数 */ &reportRow.addString(String(&decCount3)); /* 本月新增:调入人数 */ &reportRow.addString(String(&decCount4)); /* 本月减少:离职人数 */ &decCount5 = Abs(&decCount6 - &decCount1 - &decCount2 - &decCount3 - &decCount4); &reportRow.addString(String(&decCount5)); /* 本月减少:调出人数 */ &reportRow.addString(String(&decCount6)); /* 月末人数 */ &reportDefn.addRow(&reportRow); &prevAColValue = &aColValue; &rowNum = &rowNum + 1; End-For; End-For; /* 5. 生成并保存Excel文件 */ &reportDefn.prepareExcel(); &FilePath = %FilePath | &reportTitle | "_" | &processInstance | "_" | %Date | ".xlsx"; &reportDefn.buildExcel(&FilePath); End-If;

朱国苗
  • 粉丝: 404
上传资源 快速赚钱