使用参数中的查询计算和If语句作为交叉表交集错误

时间:2018-03-21 11:08:27

标签: parameters crosstab cognos cognos-10 cognos-bi

我正在使用IBM Cognos Report Studio版本10.2.2

我尝试创建交叉表但收到以下错误消息: "执行操作' sqlOpenResult'状态=' -237'"具有以下详细信息" CAF-WRN-2082发生错误。请联系您的管理员。 CAF使用SecureErrorID记录完整错误:2018-03-21-06:30:41.717-#3"

交叉表节点成员是位置(水平)&来自部门(垂直)(共有13个地点和11个部门,但只有4个部门正在被过滤)。

我创建了一个提示符,因此需要为每个位置输入一个介于0到147之间的数字,并创建一个与参数链接的数据项[#residents](每个位置的数据项' s参数,即[ILA# [居民]是29)。

我创建了一个数据项[Proj - PRD],其中表达式是IF语句:

IF([Proj - Department]='DIN') THEN (0.8) ELSE (IF([Proj - Department]='HCAL')    
THEN (1.8) ELSE (IF([Proj - Department]='HCMC') THEN (2.5) ELSE (IF([Proj - 
Department]='HSK') THEN (0.3) ELSE ('ERROR'))))

我创建了另一个数据项来将[Proj - PRD]转换为数字(我之前收到的错误信息中填充的内容为varchar):

cast([Proj - PRD],numeric)

最后但并非最不重要的是,我创建了另一个数据项[PRD计算]来乘以居民的数量& PRD,希望将其用作交叉表交叉点:

[Proj - PRD Casted]*[ILA # of Residents]

我在验证报告时没有收到错误&我在运行报告时提示输入一个数字,但在为ILA输入29之后收到上述错误消息(我现在只设置了一个位置的提示,直到我可以让报告正确运行)

此外,作为一个侧面,我试图创建此交叉表的原因是将其与另一个交叉表进行比较,该交叉表显示按位置和工作的总工作小时数。来自部门的部门([PRD计算]是按地点和部门计算的预计总工时)。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的问题是您的IF声明。 ELSE在某些时候输出一个字符串('ERROR')。这与您输出的其他值不兼容,它们都是浮点数。此外,您正在尝试将值转换为数字,当输出“ERROR”时,该值将失败。最后,您将该值乘以另一个数字,这也不能用于字符串。

一种可能的解决方案是输出-1而不是'ERROR'。这是一个数字,与您输出的其他值兼容。您可以稍后修改逻辑以将-1值解释为“ERROR”以用于显示或其他目的。