一、维护分段的作用

在数据源输出时,如果希望输出分段值(如参工工龄为"1-3年",应发合计为"10000-20000"),而不是具体值(如"2.5","18888"), 则可以通过维护分段来实现。维护分段值后,在进行分组计算、分组求和和分组求平均时,将根据分段进行分组输出。这样会大大减少数据源的数据条数。例如选择“分组计算”,字段选择“性别”“出生日期”后,数据源输出数据格式如下:

性别 参工工龄段 数量
3个月以下 2
3-6个月 3
。。。 。。。 。。。
10年及以上 2

 

二、维护分段的方法

请大家参照以下两个示例编写

示例、参加工作时间输出参工工龄的分段值

case when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) > 0
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 0.25 then '3个月以下'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 0.25
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 0.5 then '3到6个月'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 0.5
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 1 then '6到12个月'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 1
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 3 then '1到3年'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
       - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 3
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 6 then '3到6年'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
       - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 6
      and (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
      - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) < 10 then '6到10年'

   when (YEAR({ts'@baseDate'} ) - YEAR("PP".fjobStartDate) + TO_DECIMAL(MONTH({ts'@baseDate'} )
       - MONTH("PP".fjobStartDate))/12 + TO_DECIMAL(DAYOFMONTH({ts'@baseDate'} )
      - DAYOFMONTH("PP".fjobStartDate))/365) + ISNULL("PP".FadjustWorkValue,0) >= 10 then '10年及以上'

else '空' end

其中"PP".fjobStartDate为参加工作日期,"PP".FadjustWorkValue 为参加工作调整时间。

注意:数据表名称前面(例:"PP".fjobStartDate)是双引号"",输出字符(例:then '空')是单引号'',下同。

示例、应发合计输出应发合计的分段值

case when "cmp_CTB".s1 <10000 then '10000以下'

    when "cmp_CTB".s1 >=10000 and "cmp_CTB".s1 < 20000 then '10000-20000'

else '20000及以上' end

其中"cmp_CTB".s1为应发合计。