【问题标题】:crystal reports - active employee formula水晶报表 - 活跃员工公式
【发布时间】:2019-01-11 20:11:58
【问题描述】:

我正在尝试制作一份报告,提供过去一个月的“活动快照”。例如 - 10 月份有多少活跃的女性就业?

我要获取活动快照的日期(特定月份)将发生变化。我在公式中使用了以下字段,employee.hire_date 是员工加入我们组织的日期,employee.term_date 是雇佣结束的日期。

然后我按性别对员工进行分组,使用employee.gender,然后使用employee.name

你们怎么看这个逻辑? employee.hire_date 可以是该月的任何时间,减去最后一天? employee.term_date 可以是该月的任何时间,减去最后一天?我说的是减去最后一天,因为该员工必须在本月至少工作 1 天。我被难住了……

然后做个公式,把参数设置为月份的第一个月和最后一个月?

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    我认为您的方向是正确的,如果我告诉您我认为您需要在给定月份处理 6 种不同的情况,这可能会有所帮助。关键是员工工作期间和给定月份之间是否存在交集。

    假设:

    • h 是租用日期
    • T 是 term_date
    • m 是给定月份的第一天
    • M 是给定月份的最后一天

    查看这些“时间线”:(抱歉,有点混乱)

    h..T..m........M.......(1-月前开始和结束,没有交集) ......m..h..T..M......(2-月内开始和结束,有交集) ......m........M..h..T(3-月后开始和结束,没有交集) h.....m........M.......T(4-月前开始,月后结束,交叉点) h.....m....T...M......(5- 月前开始,月内结束,交叉点) ......m....h....M.......T(6- 月内开始,月后结束,交点)

    因此,如果 h = m,则存在交集(万岁,卡诺图!)。

    如你所说,忽略最后一天,可能是:h m。

    如果存在交叉点,则创建一个按性别计算员工数量的运行总计字段。

    编辑:也许完整的公式应该是:

    {EMPLOYEE.Hire_Date}<={?Last of Month} and (
      isnull({EMPLOYEE.Termination_Date}) OR 
      {EMPLOYEE.Termination_Date}>={?First of Month}
    )
    

    【讨论】:

    • 所以我在运行总计中尝试了这个公式:if not(isnull({EMPLOYEE.Termination_Date})) 然后 {EMPLOYEE.Hire_Date}={?First of Month} 然后重置每个employee.gender 分组的变化。但我只数到 8.... 而且我知道大约有 150 名在职员工。还有什么我想念的吗? @heringer
    • 我认为您需要处理空终止日期。我想如果没有终止日期,那么员工是活跃的。所以,你需要一个 OR 子句。请参阅编辑后的答案。有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多