2015-12-28 6 views
0

Я хочу создать таблицу, как это:MDX: Объединяя месяцев с общей

 [January] [February] ...other months... [Total for Year] 

item1 

item2 

item3 

Это легко создать 2 различных запросов, в течение нескольких месяцев и общей, как это:

SELECT 
[Time].[Month].[Month] ON COLUMNS, 
TOPCOUNT([Items], 5, [Count]) ON ROWS 
FROM [Cube] 
WHERE([Time].[Year].[Year].&[2015-01-01T00:00:00]) 

и

WITH 
MEMBER [Total] AS SUM([Count], [Time].[Year].[Year].&[2015-01-01T00:00:00]) 
SELECT 
[Total] ON COLUMNS, 
TOPCOUNT([Items], 5, [Count]) ON ROWS 
FROM [Cube] 

но как соединить их или написать один?

+0

Я немного удивлен ваш первый 'mdx' сценарий ведет себя, как вы не указали меру. – whytheq

ответ

0

Вы могли бы расширить WITH заявление так:

WITH 
    MEMBER [Time].[Month].[All].[Total] AS --<<THIS IS HOSTED IN SAME HIERARCHY AS THE SET THAT FOLLOWS 
    Sum 
    (
     [Count] 
    ,[Time].[Year].[Year].&[2015-01-01T00:00:00] 
    ) 
    SET [mths] AS 
    Exists 
    (
     [Time].[Month].[Month].MEMBERS   
    ,[Time].[Year].[Year].&[2015-01-01T00:00:00] 
    ) 
    SET [concatenatet_set] AS 
    { 
     --<<THE FOLLOWING CAN BE BROUGHT TOGETHER AS THEY HAVE THE SAME "DIMENSIONALITY" I.E. FROM THE SAME HIERARCHY 
     [mths] 
    ,[Time].[Month].[All].[Total] 
    } 
SELECT 
    [concatenatet_set] ON COLUMNS 
,TopCount 
    (
    [Items] 
    ,5 
    ,[Count] 
) ON ROWS 
FROM [Cube]; 

Вот сценарий, я использовал, чтобы проверить вышеупомянутую идею против AdvWrks:

WITH 
    MEMBER [Date].[Calendar].[All].[Total] AS 
    Sum 
    (
     [Measures].[Internet Sales Amount] 
    ,(
     [Date].[Calendar].[All Periods] 
     ,[Date].[Calendar Year].&[2007] 
     ,[Date].[Calendar Quarter of Year].&[CY Q1] 
    ) 
    ) 
    SET [mths] AS 
    Exists 
    (
     [Date].[Calendar].[Month] 
    ,(
     [Date].[Calendar Year].&[2007] 
     ,[Date].[Calendar Quarter of Year].&[CY Q1] 
    ) 
    ) 
    SET [concatenatet_set] AS 
    { 
     [mths] 
    ,[Date].[Calendar].[All].[Total] 
    } 
SELECT 
    [concatenatet_set] ON COLUMNS 
,TopCount 
    (
    NonEmpty 
    (
     [Product].[Subcategory].[Subcategory] 
    ,(
     [Date].[Calendar Year].&[2007] 
     ,[Date].[Calendar Quarter of Year].&[CY Q1] 
    ) 
    ) 
    ,5 
    ,[Measures].[Internet Sales Amount] 
) ON ROWS 
FROM [Adventure Works] 
WHERE 
    [Measures].[Internet Sales Amount]; 

Это приводит к следующему, который представляется разумным :

enter image description here

0

Попробуйте просто изменить свой первый запрос:

SELECT 
[Time].[Month].Members ON COLUMNS, 
TOPCOUNT([Items], 5, [Count]) ON ROWS 
FROM [Cube] 
WHERE([Time].[Year].[Year].&[2015-01-01T00:00:00])