我有一个交叉表报告,用于计算我的产品的故障率;它有两个度量(PASSCOUNT,FAILCOUNT)和计算FAILRATE(FAILCOUNT / PASSCOUNT + FAILCOUNT)
报告布局如此:
OEM
MODEL
TESTYEAR TESTMONTH PASSCOUNT FAILCOUNT FAILRATE
当我选择Total图标时,它会逻辑地将每个列添加为
2012 OCT 7547 697 0.08
NOV 9570 373 0.04
DEC 1879 107 0.05
------------------------
Total 18996 1177 0.17
我的用户却希望TOTAL FAILRATE
TOTAL FAILCOUNT/(TOTAL PASSCOUNT+TOTAL FAILCOUNT)
转换为
1177 / (18996+1177) = 0.058
如何在报告中创建此自定义总计?我正在阅读有关创建查询计算的内容,但我不清楚这是正确的方法。
Cognos Report Studio 8.4 IBM DB2 UDB
答案 0 :(得分:3)
在Crosstab中选择合适的总数非常重要。
添加总行时,请确保选择自动摘要:
此选项将确保聚合由每个查询数据项单独确定。
如果它仍未提供预期结果,则在查询资源管理器上,选择交叉表上正在使用的查询,并在FAILRATE数据项上,选择计算选项(在属性面板上):
答案 1 :(得分:3)
你的确可以。有几种方法。
在报告查询中,您可以使用包含所需计算的各个查询项目正常工作(PASSCOUNT,FAILCOUNT等)。您可以在同一查询项列表中创建新数据项/表达式并编辑定义。在左侧,您可以选择使用原始数据库数据源中的列,但是您可以选择另一个窗格来实际重用您在同一查询中定义的其他查询项/计算(PASSCOUNT FAILCOUNT FAILRATE)。 Cognos知道当您使用同一查询中的其他列创建表达式时,首先要解析这些查询项,以便解决依赖于它们的计算。您希望确保在其他相关查询项之后列出您的计算/派生列(实际上,这可能无关紧要,但在查看它时有意义)。另外我相信你必须将失败率查询项/表达式设置为“计算”作为其聚合方法。
摘要行可能/可能不会有点棘手。没有报告工作室就在我面前,当你将总计部分添加到列表报告中并使用新的失败率表达式来扩展正确的计算或者你可能必须使用另一种方法来执行摘要是一个报表表达式。
您创建的报表表达式不在查询中,而是在报表的gui页面上(它在工具箱中的边桌,单点等等)。它有一个表达式构建器,就像在查询中一样,但是你会注意到函数集是不同的,因为它是在查询运行后完成的,并且结果返回如此简单的事情,比如你正在做的很好,这只是数学,但你会注意其他数据库函数在报表表达式上不可用,因为它们出现在html输出中,而不是在针对数据库的查询运行期间。
希望这会有所帮助。总之,您将基于同一查询/结果集中其他列的汇总计算创建计算列。这在理论上与此SQL语句相同,因为SQL不直接允许这样做,但希望它有助于解释cognos正在做什么。
选择1 + 2作为FAILCOUNT,2 + 3 AS PASSCOUNT,(FAILCOUNT / PASSCOUNT + FAILCOUNT)作为FAEMRATE从SOMETABLE - Cognos能够在同一个查询中使用其他聚合计算列的结果,如果你生成sql,你可以看到它如何安排SQL来执行此操作。
谢谢,
添
答案 2 :(得分:0)
在交叉表报告中发生的情况是首先渲染柱状数据然后是行级别数据,因此这是导致问题的原因。要解决此问题,请单击列列标题' FAILRATE' &安培;给它一个Solve Order = 1,只要total的求解顺序为NULL。诀窍是Solve命令会在完成其他所有其他操作后控制FAILRATE的计算。