sql - IBM Cognos Analytics 从数据集中选择前 2 个
问题描述
我正在编写一份报告,我需要本周和前一周的数据,并比较这两者。我的数据中有一个星期列,它们是交易,所以我的数据看起来像:
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.
我认为这与聚合有关(每周出现多个记录)。无论如何,我有点卡住了,错误消息没有给我任何线索。非常感谢一些帮助!
解决方案
RANK
应该可以正常工作,但如果您试图让 Cognos 在一个地方完成所有工作,它可能无法正常工作。我想我可以过滤排名数据项并将应用程序属性设置为自动聚合之后。但我得到了奇怪的结果。
与其尝试创建一个复杂的解决方案,不如尝试将问题分解为更小、更简单的组件。
定义 Query1
数据项:
Week = [namespace].[query subject].[Week]
Amount = [namespace].[query subject].[Amount],详细聚合设置为 Total
Rank = rank([namespace].[query主题].[周])
创建 Query2 并将 Query1 设置为其源。数据项:
[Query1].[Week]
[Query1].[Amount]
详细过滤器:
[Query1].[Rank] <= 2
使用 Query2 作为列表的来源。
推荐阅读
- python-2.7 - 循环键盘效果
- java - 可能由于模(10,9)+7 导致超出时间限制错误?
- vue.js - 未找到模块,无法解析组件,未指定 $TERM。将 Nuxt 应用程序部署到 Heroku
- c# - Genesys 工作台。编辑。获取信息
- typescript - 打字稿重新映射数组类型
- c++ - 与 Visual Studio 静态链接时如何链接 SFML
- mysql - JpaRepository 保存值始终返回 null
- windows - 如何使用 git bash 删除 ~$ 文件(在 Windows 上)
- ios - 如何在 Swift 中更改 UILabel 的文本属性?
- snowflake-cloud-data-platform - 使用 Like/Regex 如何匹配列前的多个 777 变体