2013-01-11 28 views
0

我有兩個查詢,我希望將它們連接在一起,這會給我計算出的行總數。我遇到的問題是,儘管這些措施來自1個事實表,但球隊名稱有兩個角色扮演維度。我對MDX非常陌生。MDX在兩個角色扮演維度中添加了兩個立方體度量值

結果會是這樣的提前

| Competition | Squad | Goals A | Goals B | Total (Goals A + Goals B)| 
|----------------|---------|---------|---------|--------------------------| 
| Premier League | Arsenal | 25  | 15  | 40      | 

感謝。

查詢1:

SELECT 
([Measures].[Goals A]) ON COLUMNS, 
NON EMPTY ([Dim Competition].[Hierarchy].[Competition ID],[Squad A].[Squad Name].ALLMEMBERS) ON ROWS 
FROM 
[FDC Star] 
WHERE [Dim Competition].[Competition ID].&[1]; 

查詢1結果:

Competition  Squad     Goals A 
Premier League Arsenal     25 
Premier League Aston Villa    8 
Premier League Chelsea     22 
Premier League Everton     17 
Premier League Fulham     17 
Premier League Liverpool    17 
Premier League Manchester City   25 
Premier League Manchester United  28 
Premier League Newcastle United  13 
Premier League Norwich City   13 
Premier League Queens Park Rangers  8 
Premier League Reading     15 
Premier League Southampton    15 
Premier League Stoke City    14 
Premier League Sunderland    11 
Premier League Swansea City   19 
Premier League Tottenham Hotspur  17 
Premier League West Bromwich Albion 17 
Premier League West Ham United   19 

QUERY2:

SELECT 
([Measures].[Goals B]) ON COLUMNS, 
NON EMPTY ([Dim Competition].[Hierarchy].[Competition ID],[Squad B].[Squad Name].ALLMEMBERS) ON ROWS 
FROM 
[FDC Star] 
WHERE [Dim Competition].[Competition ID].&[1]; 

QUERY2結果:

Competition  Squad     Goals B 
Premier League Arsenal     15 
Premier League Aston Villa    9 
Premier League Chelsea     17 
Premier League Everton     18 
Premier League Fulham     15 
Premier League Liverpool    17 
Premier League Manchester City   16 
Premier League Manchester United  26 
Premier League Newcastle United  14 
Premier League Norwich City   11 
Premier League Queens Park Rangers  9 
Premier League Reading     8 
Premier League Southampton    12 
Premier League Stoke City    7 
Premier League Sunderland    10 
Premier League Swansea City   12 
Premier League Tottenham Hotspur  22 
Premier League West Bromwich Albion 12 
Premier League West Ham United   5 

回答

0

花費很多時間試圖想出一個解決方案,我終於解決了我查詢後。

感謝

WITH 
    MEMBER [Measures].[GFA] AS 
    (
    ([Measures].[Goals A]), 
    linkmember([Dim Squad].[Squad Name],[Squad A].[Squad Name]), 
    root([Squad Name]) 
    ) 
    MEMBER [Measures].[GFB] AS 
    (
    ([Measures].[Goals B]), 
    linkmember([Dim Squad].[Squad Name],[Squad B].[Squad Name]), 
    root([Squad Name]) 
    ) 
    MEMBER [MEASURES].[GF] AS 
    (
     [Measures].[GFA] + [Measures].[GFB] 
    ) 
    select 
    {[Measures].[GFA],[Measures].[GFB],[MEASURES].[GF]} on 0, 
    non empty [Dim Squad].[Squad Name].allmembers on 1 
    from [FDC Star] 
    where [Dim Competition].[Competition ID].&[1] 
0

你可以嘗試這樣的事情:

WITH MEMBER [Measures].[Goals B Linked] 
AS (LinkMember([Squad A].[Squad Name].CurrentMember, [Squad B].[Squad Name]), [Measures].[Goals B]), 
MEMBER [Measures].[Total] 
AS [Measures].[Goals A] + [Measures].[Goals B Linked] 

SELECT 
{[Measures].[Goals A], [Measures].[Goals B Linked], [Measures].[Total]} ON COLUMNS, 
NON EMPTY ([Dim Competition].[Hierarchy].[Competition ID],[Squad A].[Squad Name].ALLMEMBERS) ON ROWS 
FROM 
[FDC Star] 
WHERE [Dim Competition].[Competition ID].&[1];