2013-09-03 3 views
1

한 열의 데이터를 합산하고 다른 열의 데이터를 해당 유형별로 집계하려면 MDX 쿼리가 필요합니다. examply를 들어, 내 현재의 쿼리는 다음과 같습니다MDX 쿼리의 합계 및 그룹화

SELECT 
{ [Measures].[DeclCount], [Measures].[SubCount]} ON COLUMNS, 
{ (
[Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS * 
[Organization].[Name].[Name].ALLMEMBERS * 
[Organization].[Need Declaration10].[Need Declaration10].ALLMEMBERS * 
[DeclType].[DeclarationNumber].[DeclarationNumber].ALLMEMBERS 
) 
} 
    ON ROWS 
FROM 
(
    SELECT 
     DESCENDANTS([Organization].[OrganizationKey].CHILDREN) on COLUMNS 
    FROM 
    (
     SELECT ([Organization].[Code].&[0105044397] ON COLUMNS 
     FROM [MyCube] 
    ) 
) 

현재 결과는 다음과 같습니다 코드 - 이름 - 필요 Declaration10 - DeclType - DeclCount - SubCount 코드 1 - Organization1 - 0-1 - NULL - NULL 코드 1 - Organization1 - 1 - 2 - 1-2 코드 1 - Organization1 - 1-3 - 2-2

원하는 결과는 다음과 같습니다

Code - Name - Sum(Need Declaration10) - SumDeclCount1 - SumSubCount1 - SumDeclCount2 - SumSubCount2 - SumDeclCount3 - SumSubCount3 
Code1 - Organization1 - 2 - NULL - NULL - 1 - 2 - 2 -2 

어떻게 MDX와이를 달성 할 수 있습니까? 어떤 도움을 주셔서 감사합니다.

편집 : 감사 프랭크, 그것은 내가 필요로하는 거의 모든입니다. 마지막 두 가지는 다음과 같습니다. 1. 10 개의 다른 [DeclType]. [DeclarationNumber]가 있습니다. 각각에 대한 합계를 계산하려면 ([DeclType]. [DeclarationNumber] .All, Measures. [Need of Declaration10의 합)]을 수정할 수 있습니까? 2. SSRS 보고서에이 쿼리를 채워야합니다. 이 쿼리에서 병합 된 데이터 집합을 가져올 수 있습니까? 이상적인 soultion는 X가 이미 주석에 명시된 바와 같이 1..10

+0

합계하려는 것은 측정 값이어야합니다. 나는 당신이 차원 적 모델링에 대해 먼저 배워야한다고 생각합니다. 그런 다음 데이터 모델이 맞으면 MDX가 다소 단순합니다. – FrankPl

+0

불행히도 모델을 변경할 수 없습니다. – zlatkovin

답변

1

, 이것은 [DeclarationNumber]이 그대로있을 것보다 더 어렵다 = (OrganizationKey, 여기서 OrganizationName, DeclCount_X, SubCount_X, SumOfNeed_X) 같이 설정됩니다 속성/계층 구조이지만 측정 값은 아닙니다. [DeclarationNumber]에 정수 값만 있다고 가정하고 아래 해결 방법이 효과가 있기를 바랍니다. 그럼에도 불구하고 측정 값과 유사하게 사용할 수 있으려면 String에서 숫자 유형으로 변환해야합니다.

쉬운 부분 열로 이동 [DeclType].[DeclarationNumber] 이동된다. 나는 당신의 큐브에 액세스 할 수없는 것처럼

WITH MEMBER Measures.[Declaration10 numeric] as 
      CInt([Organization].[Need Declaration10].CurrentMember.Name) 
    MEMBER Measures.[Sum of Need Declaration10] as 
      Sum(EXISTING [Organization].[Need Declaration10].[Need Declaration10].Members, 
       Measures.[Declaration10 numeric] 
      ) 
SELECT { ( 
      [DeclType].[DeclarationNumber].All, 
      Measures.[Sum of Need Declaration10] 
     ) } 
     + 
     (
     [DeclType].[DeclarationNumber].[DeclarationNumber].Members 
     * 
     {[Measures].[DeclCount], [Measures].[SubCount]} 
     ) 
     ON COLUMNS, 

     [Organization].[OrganizationKey].[OrganizationKey].ALLMEMBERS 
     * 
     [Organization].[Name].[Name].ALLMEMBERS 
     ON ROWS 
FROM 
(
    SELECT 
     DESCENDANTS([Organization].[OrganizationKey].CHILDREN) on COLUMNS 
    FROM 
    (
     SELECT ([Organization].[Code].&[0105044397] ON COLUMNS 
     FROM [MyCube] 
    ) 
) 

것은, 거기에 일부 개조하면 되겠 필요가 구문이나 문장의 일부 논리에 할 수 있습니다.

+0

감사합니다. 필요한 모든 것입니다. – zlatkovin

+0

마지막 두 가지가 있습니다 : 1. 내가 가지고있는 10 가지 [DeclType] [DeclarationNumber].. 그것은 을 수정할 수 있습니다 ([DeclType]. [DeclarationNumber] .ALL, 측정. 필요 Declaration10의 합]) 그들 각각의 합계를 계산하기를? 2. SSRS 보고서에이 쿼리를 채워야합니다. 이 쿼리에서 병합 된 데이터 집합을 가져올 수 있습니까? Ideal soultion은 (OrganizationKey, OrganizationName, DeclCount_X, SubCount_X, SumOfNeed_X)와 같이 설정됩니다. 여기서 X는 1.10입니다. – zlatkovin

+0

결과를 병합하려면 선언 번호와 원래 측정 값의 각 조합에 대해 새 측정 값 구성원을 정의해야합니다. 튜플 구문을 사용하여, e. 지. '([DeclType]. [DeclarationNumber]. [typename1], [Measures]. [DeclCount])'를 선택하십시오. 그런 다음 모든 측정 값을 열 목록에 나열합니다. – FrankPl