Cognos 中的 Sum 列

Sum column in Cognos

我正在制作一份报告,将电池的产量与平均产量(大致)进行比较

所以一个细胞(cellule)在一个房间(salle)中,每个房间有很多个细胞。我们每天都有数据库中的生产(Production brute)和标准生产。 这些行按周 (Semaine) 分组。 "production moyenne" 列用于显示 房间 .

的平均值

我只想显示一个单元格的值,所以我对 "Nom de salle" 和 "Nom de cellule" 进行了筛选。问题是 "production moyenne" 列计算单元格的周平均值,而不是房间,这似乎有点合乎逻辑。

所以我停用了 "Nom de cellule" 列上的过滤器,并在 "Production brute" 和 "Production standard" 列中添加了一个 if 条件,因此这些列将被过滤,但不会 "Production moyenne"一个.

它不起作用,因为现在显示了所有单元格,而我不需要的单元格的列中只有零,最后一列也不正确,因为它只是该单元格的平均值.

希望您能理解我的问题,欢迎随时询问更多详情。

这是一个常见问题。您希望根据要从输出中排除的详细信息行计算聚合。

我假设您使用的是关系源。如果是这样,解决方案是使用派生查询。派生查询是使用另一个查询作为其来源的查询,而不是来自模型的项目。这是派生查询在 Report Studio 中的样子:

Query1 不包含直接指向任何数据模型的项目。相反,它从 Query2 获取它的项目。 Query2 将包含直接引用模型对象的项。您只需将一个查询拖到另一个查询的右侧即可创建此关系。

你的平均计算应该如下:

average([Production brute] for [Semaine],[Nom de salle])

在解决方案中,Query2 将包含您现有的数据项,包括上面的平均值计算。但是它不会包含过滤器,因为我们需要所有存在的详细信息行来计算平均值。将过滤器移动到 Query1,确保引用 Query2 项目:

[Query2].[Nom de salle] = ?param1?
[Query2].[Nom de cellule] = ?param2?

现在将所有 Query2 数据项拉入 Query1。更改您的数据容器以指向新的派生查询:Query1.

如果您查看生成的 SQL,效果是来自 Query2 的 SELECT 语句包含在另一个 SELECT 语句中。外部 select 的 WHERE 子句包含过滤器,这些过滤器在聚合计算完成后才会应用。