我无法构建查询,请查看我的示例架构
Table Name: KRIs
KRI_ID KRI_Name
------ --------
K1 KNM
K2 KNM2
Table Name: KRIValues
KRIVal_ID KRIVal_Name KRI_Value_Date KRIVal_Create_Date KRI_ID
--------- ----------- -------------- ------------------- -------
KV1 KVNM1 2016-01-01 2016-01-01 06:01:02 K1
KV2 KVNM2 2016-02-01 2016-02-01 05:12:13 K1
KV3 KVNM3 2016-02-01 2016-02-01 05:20:20 K1
KV4 KVNM4 2016-03-01 2016-03-01 05:10:31 K1
KV5 KVNM5 2016-01-01 2016-01-01 10:09:12 K2
现在,如果我们加入PK与FK,我们将获得
KRIVal_ID KRIVal_Name KRI_Value_Date KRIVal_Create_Date KRI_ID KRI_Name
--------- ----------- -------------- ------------------- ------- --------
KV1 KVNM1 2016-01-01 2016-01-01 06:01:02 K1 KNM
KV2 KVNM2 2016-02-01 2016-02-01 05:12:13 K1 KNM
KV3 KVNM3 2016-02-01 2016-02-01 05:20:20 K1 KNM
KV4 KVNM4 2016-03-01 2016-03-01 05:10:31 K1 KNM
KV5 KVNM5 2016-01-01 2016-01-01 10:09:12 K2 KNM2
现在我知道我可以使用rank()来获取最新的n条记录,让我们说每个KRI_ID最后3条记录,如下所示
KRIVal_ID KRIVal_Name KRI_Value_Date KRIVal_Create_Date KRI_ID KRI_Name
--------- ----------- -------------- ------------------- ------- --------
KV1 KVNM1 2016-01-01 2016-01-01 06:01:02 K1 KNM
KV2 KVNM2 2016-02-01 2016-02-01 05:12:13 K1 KNM
KV3 KVNM3 2016-02-01 2016-02-01 05:20:20 K1 KNM
KV5 KVNM5 2016-01-01 2016-01-01 10:09:12 K2 KNM2
但我不想这样做我确实需要最后n条记录,但我只需要每月选择一条记录。如下所示
KRIVal_ID KRIVal_Name KRI_Value_Date KRIVal_Create_Date KRI_ID KRI_Name
--------- ----------- -------------- ------------------- ------- --------
KV1 KVNM1 2016-01-01 2016-01-01 06:01:02 K1 KNM
KV3 KVNM3 2016-02-01 2016-02-01 05:20:20 K1 KNM
KV4 KVNM4 2016-03-01 2016-03-01 05:10:31 K1 KNM
KV5 KVNM5 2016-01-01 2016-01-01 10:09:12 K2 KNM2
在上面我只选择2016-02-01的最新记录。如何在IBM Cognos Report Studio中执行此操作。
答案 0 :(得分:1)
我相信你可以通过过滤器和使用maximum()聚合函数来实现这一点。
我将用简化的例子演示:
KRI_Value_Date | KRIVal_Create_Date | KRI_ID
2016-01-01 | 2016-01-01 06:01:02 | K1
2016-02-01 | 2016-02-01 05:12:13 | K1
2016-02-01 | 2016-02-01 05:20:20 | K1
2016-01-01 | 2016-01-01 10:09:12 | K2
您可以按如下方式添加过滤器:
[KRIVal_Create_Date] = maximum([KRIVal_Create_Date] for [KRI_ID],extract(year,[KRIVal_Create_Date]),extract(month,[KRIVal_Create_Date]))
我们找到每个ID,年和月组合的最大创建日期,并且只包含日期与该日期匹配的行。