Sql Cognos中的Sum列

Sql Cognos中的Sum列,sql,report,cognos,cognos-10,Sql,Report,Cognos,Cognos 10,我正在做一份报告,比较一个单元的产量和平均产量(大致) 房间里有一个细胞,每个房间里都有很多细胞。我们每天都有数据库中的生产(生产暴力)和标准生产。 行按周分组(Semaine)。“生产moyenne”列用于显示周和房间的平均值 我只想显示一个单元格的值,所以我在“Nom de salle”和“Nom de cellle”上做了一个过滤器。问题是“production moyenne”列计算的是单元的周平均值,而不是房间,这似乎有点合乎逻辑 因此,我停用了“Nom de cellle”列上的过

我正在做一份报告,比较一个单元的产量和平均产量(大致)

房间里有一个细胞,每个房间里都有很多细胞。我们每天都有数据库中的生产(生产暴力)和标准生产。 行按周分组(Semaine)。“生产moyenne”列用于显示房间的平均值

我只想显示一个单元格的值,所以我在“Nom de salle”和“Nom de cellle”上做了一个过滤器。问题是“production moyenne”列计算的是单元的周平均值,而不是房间,这似乎有点合乎逻辑

因此,我停用了“Nom de cellle”列上的过滤器,并在“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子句包含过滤器,这些过滤器在聚合计算完成后才会应用