壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 369|回复: 0

Cognos8设计一个日期做三次判断,或者多次判断

[复制链接]
发表于 2012/3/9 13:02:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在做Report报表时,有两种数据源,一种是从CUBE取数设计报表,第二种是直接从数据库表中取数。但设计上有点区别,在前一种,建议在设计transfermor时做好同比、环比指标。就不要考虑条件选择。
第二种方法处理上考虑建两个子查询是最好的,本月子查询取200809,上月子查询取200808,同期子查询取200709,通过UNION聚合在一个汇总查询中。区分本月、上月、同期指标值。其实Cognos就类似于SQL脚本,语法有自己的解释器。

日期转化:
1)、上月日期转化条件:(传递参数)
cast([iq116].[用户发展分析事实表].[日期标识],VARCHAR(8))=( if (substring(cast(?统计时间?,varchar(8)),5,2)='01') then ( substring(cast(?统计时间?-10000,varchar(8)),1,4)||'1201') else ( cast(?统计时间?-100,varchar(8)) ) )

2)、同期日期转换条件:(传递参数)
[iq116].[用户发展分析事实表].[日期标识]=?统计时间?-10000
或者强制转换:把数值型转换日期型数据,在reportnet验证时,报转换类型出错,但报表可以运行,是强制转换日期。
substring(cast([iq116].[用户发展分析事实表].[日期标识],varchar( 8 )),1,6) = substring(cast(_add_years(cast(?统计时间?,date),-1),varchar( 8 )),1,4)||substring(cast(_add_years(cast(?统计时间?,date),-1),varchar( 8 )),6,2)

3)、把系统日期转化上月日期:
substring(cast([iq116].[收入排名趋势分析].[时间],VARCHAR( 10 )),1,6)=substring(cast(_add_months(current_date,-1),VARCHAR ( 10 )),1,4)||substring(cast(_add_months(current_date,-1),VARCHAR ( 10 )),6,2)

4)、把字符转化成日期:
cast(cast(_add_months(current_date,-2),VARCHAR ( 10 )),date)
或者 cast('2005-09-20',date);
_add_years(cast('20050601',date),-1)

5)、选择日期条件:(传递参数)
substring(cast([iq116].[欠费分析事实表].[日期维ID],VARCHAR ( 10 )),1,6)=substring(cast(?选择日期?,VARCHAR ( 10 )),1,4)||substring(cast(?选择日期?,VARCHAR ( 10 )),5,2)

注意:不能直接把数值转换成日期,如cast(20050920,date);
但可以 substring(cast(_add_years(cast('20050601',date),-1),VARCHAR ( 10 )),1,8)||'01' --2004-06-01
也可以用数值参数:_add_years(cast(?日期参数?,date),-1)

6)、以当前系统时间作为判断
[多元专题分析模型].[日期].[CAL_DATE_ID] < cast(substring(cast(current_date,varchar(10)),1,4)||substring(cast(current_date,varchar(10)),6,2)||substring(cast(current_date,varchar(10)),9,2),integer)

该贴已经同步到 xiaoerp的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 04:20 , Processed in 0.012000 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表