一、维护分段的作用
在数据源输出时,如果希望输出分段值(如参工工龄为"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为应发合计。