【发布时间】:2021-08-21 00:45:54
【问题描述】:
我正在编写一份报告,其中需要本周和前一周的数据,并比较这两个数据。我的数据中有一个星期列,它们是交易,所以我的数据看起来像:
Amount - Week
13 - 01
19 - 01
11 - 02
10 - 02
13 - 02
12 - 03
18 - 03
15 - 04
我想这是最近两周的结果和金额的总和:
Week 03: 30
Week 04: 15
现在很容易获得最近的一周,只是一个最大值(报告的一周),但是当我想选择第二大时我卡住了。
我试图做一个基本上是“最大值(当周=最大值(周)然后为空,否则周)”的过滤器,但要么我没有弄清楚语法,要么我这种方法不起作用。
我厌倦的其他替代方法是 rank() 功能,然后是在 (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.
我认为这与聚合有关(每周出现多条记录)。无论如何,我有点卡住了,错误消息没有给我任何线索。非常感谢一些帮助!
【问题讨论】:
-
交叉表?我没有从您的问题中看到为什么需要交叉表。看起来你需要一份清单。以演示问题的样本为基础的样本报告怎么样。您可以将报告规范发布到 pastebin。
-
dougp - Anton 说“我想建立一个最近两周的交叉表和金额的总和:”
-
是的,但提供的示例输出只是 WeekNum, SUM(Amount)。这很容易在列表中完成。我看不出使用交叉表的任何技术原因。有一些我没有看到的复杂性。我提到它的原因是,这在查询中很容易做到,泵到一个列表。当然,那时交叉表会很容易,但我没有看到需要。否则,我可能提供的任何解决方案都可能过于简单,无法满足看不见的复杂性的要求。
-
我的错,编辑了这个问题。在我的情况下,我正在使用交叉表,但为了示例,它不相关。对这个问题有任何意见吗?
-
如果我很接近,请告诉我,问题是“找到第二大”吗?例如,按大小排序将具有最大的条目,其 running_count 为 1。如果是这样,第二大条目将是 running_count 2。您可以在聚合 running_count 之后过滤
标签: sql max report cognos cognos-bi