0

我有一个列表中有 6 个查询计算列的报告。每列都来自同一字段“销售编号”:

IF( 'Metric 1' IN ?pCompany?) THEN ( CASE WHEN ( [Metric] = 'Metric 1' ) THEN ( count( distinct [Sale Number] FOR [Metric], [Category] )) END ) ELSE ( 0 )

这些列中的每一列都将 Detail 和 Summary Aggregation 设置为None。计算工作正常。但是,该报告正在为其中包含数据的列生成每一行。如下: 在此处输入图像描述

我尝试将 Detail 和 Summary 聚合更改为Default, Total但这些选项将整个列值添加到单个单元格中并且不一致。尝试对类别字段进行部分和分组,但这只是对类别名称进行分组,仍然重复每个类别的行数。

关于如何将每个类别的输出放入单行的任何想法?我正在使用 Cognos 11.0.11 版本。

4

2 回答 2

1

这看起来像一个交叉表。尝试将查询项简化为:

count( distinct [Sale Number] FOR  [Metric], [Category] )

...并使用交叉表。

或者,您可以使用 [Category]、[Metric] 和 count(distinct [Sale Number]) 将这部分逻辑分解为单独的查询,然后将其连接到其余数据中。这将使您能够在交叉表中使用它,或者为您的“metric #”列创建一个更简单的表达式。

于 2019-08-05T15:36:41.877 回答
0

我想我只是很幸运并想出了一个解决方案。更新了要使用的查询,running-count而不是count

IF( 'Metric 1' IN ?pCompany?)
THEN
(
CASE
WHEN ( [Metric] = 'Metric 1' ) THEN 
( running-count( distinct [Sale Number] FOR  [Metric], [Category] ))
END
)
ELSE
( 0 )

并在设置为时更改Detail Aggregation为。Count DistinctSummary AggregationNone

获得每个类别的单行输出。Count Distinct当我尝试仅使用or时它不起作用running-count。它必须是两者的结合。

于 2019-08-05T16:17:03.097 回答