IBM Cognos Analytics 从数据集中选择前 2 个

IBM Cognos Analytics Selecting top 2 from a dataset

我正在制作一份报告,我需要本周和前一周的数据,并比较这两者。我的数据中有一周列,这是交易,所以我的数据看起来像:

Amount - Week
13     - 01
19     - 01
11     - 02
10     - 02
13     - 02
12     - 03
18     - 03
15     - 04

我想这是最近两周的结果和总金额:

Week 03: 30
Week 04: 15

现在很容易获得最近一周,只是最大值(报告周),但是当我想要 select 第二大时我就卡住了。

我尝试做一个过滤器,基本上是“最大(当周 = 最大(周)然后 null 其他周)”,但要么我没有弄清楚语法,要么我这个方法不起作用.

我厌倦的其他选择是 rank() 功能,然后是 selects 在 (1, 2) 中排名的查询,但出于某种原因我无法使这种方法起作用,只能得到错误

The function "to_char" is being used for local processing but is not available as a built-in function, or at least one of its parameters is not supported.

我认为这与聚合有关(每周出现多个记录)。无论如何,我有点卡住了,错误消息没有给我任何线索。非常感谢您的帮助!

RANK 应该可以正常工作,但如果您尝试让 Cognos 在一个地方完成所有工作,它可能无法正常工作。我想我可以过滤排名数据项并将应用程序 属性 设置为自动聚合后。但是我得到了奇怪的结果。

与其试图创建一个复杂的解决方案,不如尝试将问题分解成更小、更简单的部分。

定义查询 1
数据项:
Week = [命名空间].[查询主题].[Week]
Amount = [namespace].[query subject].[Amount] 详细聚合设置为 Total
Rank = rank([命名空间].[查询主题].[周])

创建 Query2 并将 Query1 设置为其源。 数据项:
[查询 1].[周]
[查询 1].[金额]
详细过滤器:
[查询 1].[排名] <= 2

使用 Query2 作为列表的来源。