问题现象: | 1.客户有张考勤报表1列取该月迟到5分钟总次数 驱动表为考勤日报表 一列取月实际出勤合计(天) 驱动表为考勤月报表 报表设计时只能取一个驱动表 请问这个问题怎么解决? 2.客户考勤报表要求算出每月周六或周日有几天,每月总天数 请问如何设计公式? |
问题原因: | |
解决方案: | 您好, 此问题【经查看数据/测试】现做如下分析与答复: 问题一: 取迟到5分钟的记录, 可以在日结果统计中自定一个字段,为整型; 在考勤算法中增加一个算法:如果迟到5分钟以上的,其值为1,否则为0;动态报表中对其等于1的值做汇总即可; 一列取月实际出勤合计(天):可以对实际出勤天数做汇总,条件为:是否正常 为正常 ,实际出勤 <> 0; 问题二: 总天数 方法一:可以通过系统内置函数来取: 方法二:每月总天数: select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))) 每月工作日(周六周天除外): select DATEDIFF( day, dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate())) ) + 1 - ( 2 * DATEDIFF( week , dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate())) ) + Case When DATEPART( dw , dateadd(dd,-datepart(dd,getdate())+1,getdate())) = 1 Then 1 Else 0 End + Case When DATEPART( dw , dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate())) ) = 7 Then 1 Else 0 End ) 每月周六周日: 每月总天数 - 每月工作日 如果要取周六或周日天数, 如果: (每月天数 - 每月工作日)/2 = (每月天数 - 每月工作日 + 1)/2 那么: 周六天数 (每月天数 - 每月工作日)/2 + 1 周日天数 (每月天数 - 每月工作日)/2 否则: 周六天数 (每月天数 - 每月工作日)/2 周日天数 (每月天数 - 每月工作日)/2 【注意事项】修改前请务必做好数据备份; |
相关补丁: | |
版本: | U8 V10.0 |
模块: | 考勤管理 |
产品: | 人力资源 |
问题名称: | HR报表设计 |
最后更新: | 2011-07-21 23:20:21 |