WebFOCUS当期环比的实现方法

来源:互联网 发布:大数据时代企业竞争 编辑:程序博客网 时间:2024/05/01 22:11

1.       数据准备:环比字段所在的元数据,内有时间字段(或时间ID,通过JOIN与时间表关联找到时间字段)

2.       参数准备:设置几个变量如下所示:

-*定义一个接收时间的变量,设置初始值为199802

-DEFAULT &SEL_YYM = '199802' ;

-*EDIT函数改变&SEL_YYM的格式,取前四位的年份赋值给&SEL_YEAR

-SET &SEL_YEAR = EDIT(&SEL_YYM,'9999$') ;

-*EDIT函数取&SEL_YYM的第五位开始的之后两位的月份赋值给&SEL_MONTH

-SET &SEL_MONTH = EDIT(&SEL_YYM,'$$$$99$') ;

-*EDIT函数取&SEL_YYM的第六位开始的之后一位的月份赋值给&SEL_MONTH1

-SET &SEL_MONTH1 = EDIT(&SEL_YYM,'$$$$$9$') ;

-*当月份为两位数字时,&SEL_MONTH,一位数字时取&SEL_MONTH1

-SET &SEL_MONTH2 = IF &SEL_MONTH GE '10' THEN &SEL_MONTH ELSE &SEL_MONTH1;

-*取上一个月的时间值

-SET &PREV_MONTH1 = &SEL_MONTH2 - 1 ;

-*当月份为两位时,直接取&PREV_MONTH1,为一位时,前加’0’

-SET &PREV_MONTH2 = IF &SEL_MONTH GE '10' THEN &PREV_MONTH1 ELSE '0' || &PREV_MONTH1;

-*当月份为1月份时,直接将12赋给&PREV_MONTH,否则赋与&PREV_MONTH2

-SET &PREV_MONTH = IF &SEL_MONTH NE '01' THEN &PREV_MONTH2 ELSE '12';

 

-*年份减一得到过去一年的年份值

-SET &PREV_YEAR = &SEL_YEAR - 1 ;

-*当月份为1月份时,环比时间值为去年年份合并上月值,否则时间值为今年年份合并上月值

-SET &PREV_YYM = (IF &SEL_MONTH  NE '01' THEN (&SEL_YEAR || &PREV_MONTH) ELSE (&PREV_YEAR || &PREV_MONTH));

3.       虚拟字段准备:(在元数据上建立两个虚拟字段)

-*建两个虚拟字段,当元数据中的日期字段等于当前日期时,将环比字段的值赋给-*CURRENT_AMT,当等于上月时间值时,将对应的环比字段的值赋给PREV_AMT

DEFINE FILE DATA

REPORT_MONTH/A6 = MONTH ;

-*REPORT_MONTH/YYM = MONTH   当日期字段为Date型时,用此语句

CURRENT_AMT/D20.2=IF REPORT_MONTH EQ '&SEL_YYM' THEN VOLUME__ACTUAL ELSE 0;

PREV_AMT/D20.2=IF REPORT_MONTH EQ '&PREV_YYM' THEN VOLUME__ACTUAL ELSE 0;

END

4.       创建报表:

procedure的连接点处选择report,选择上面用到的元数据,将需要显示的字段双击到设计页面,并对其sum,设置where条件.代码如下:

TABLE FILE DATA

SUM

     'DATA.DATA.VOLUME__ACTUAL'

     'DATA.DATA.CURRENT_AMT'

     'DATA.DATA.PREV_AMT'

BY 'DATA.DATA.CUSTOMERID'

WHERE (( REPORT_MONTH EQ '&PREV_YYM' ) OR ( REPORT_MONTH EQ '&SEL_YYM' ));

ON TABLE PCHOLD FORMAT HTML

END

5.       引用到html页中,展现:

新建html,拖一个report对象到设计界面,将做好的同比fex文件reference进来,设置限制条件输出格式,这里为下拉菜单,将窗口从设计切换到参数,设置参数的数据来源,可以选择时间字段.

 

原创粉丝点击