首页 文章

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

提问于
浏览
0

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

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

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

我创建了一个提示,因此需要为每个位置输入一个介于0到147之间的数字,并创建一个与参数相关的数据项[#residents](每个位置参数的数据项,即[ILA#of Residents]为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

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

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

相关问题