2016-06-18 1 views
0
내가 쿼리를 작성 붙어

, 우리가 얻을 것이다 이제 내 샘플 스키마COGNOS - 우리가 FK와 PK에 가입하는 경우에만 기록에서 한 달에 하나 개의 레코드를 선택

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 

을 살펴

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 

지금 나는 아래

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 개의 기록을 얻을 수 KRI_ID 당 지난 3 개 기록 순위를() 할 수 있습니다 알고하지만 w하지 않습니다 개미 그냥 지난 n 개의 레코드가 필요하지만 한 달에 하나의 레코드 만 선택하면됩니다. 아래처럼

위 항목에서 나는 2016-02-01에서 최신 레코드 만 선택합니다. IBM Cognos Report Studio에서 어떻게 수행 할 수 있습니까?

답변

1

나는 필터와 maximum() aggregate 함수의 사용으로 이것을 할 수 있다고 믿는다.

나는 간단한 예와 함께 설명하겠다

:

우리는 최대를 찾을
[KRIVal_Create_Date] = maximum([KRIVal_Create_Date] for [KRI_ID],extract(year,[KRIVal_Create_Date]),extract(month,[KRIVal_Create_Date])) 

는 ID, 연도와 월의 각 조합에 대한 날짜를 만들 : 다음과 같이 필터를 추가 할 수 있습니다

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 

해당 날짜와 일치하는 행만 포함하십시오.

+0

예, 이것은 작동 할 수 있고 동적 인 접근 방식입니다. 기다릴 수있는대로 매월 4 개로 쿼리를 분할하고, 월수를 고정한 다음 매월 최대 값을 얻은 다음 결과에 합집합을 적용했습니다. – Moon