2015-02-20 2 views
0

Привет Я новичок в MDX, я хочу, чтобы объединить два оператора выбора результирующего (бок о бок, как союз) с помощью MDX запроса, пожалуйста, любое тело помочь мне решить этот вопрос первый запрос:объединить два результата набор бок о бок с помощью MDX

SELECT 
{ [Last Year] } 
ON COLUMNS, 

{ {[Location].[Location].&[7], [Location].[Location].&[12], [Location].[Location].&[11], 
[Location].[Location].&[19], [Location].[Location].&[17], [Location].[Location].&[16], 
[Location].[Location].&[9], [Location].[Location].&[18] },{[Location].[Location].[All]}} 
ON ROWS 

FROM [Cube1] 

WHERE ([Measures].[Labour %]) 

здесь [в прошлом году] является вычисленное набор

[за последний год] =====

{STRTOMEMBER("[Date].[Month].&["+ cstr(year(now())-2) +"-11-01T00:00:00]"): 
     (STRTOMEMBER("[Date].[Month].&["+ cstr(year(now())-1) +"-10-01T00:00:00]"))} 

второй запрос:

WITH MEMBER [Measures].[Budget ] AS IIF(avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)), 
             avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)),0.00), 

MEMBER [Measures].[YTD] AS IIF(avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null))<>null, 
           avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null)),0.00), 
FORMAT_STRING = "Standard", 
BACK_COLOR = CASE WHEN [YTD] = 0 THEN /*White*/16777215 /*White*/ 
WHEN [YTD] <= [Measures].[Budget ] THEN 65408 
    WHEN [YTD]<= [Measures].[Budget ] +5 THEN 65535 
    WHEN [YTD]> [Measures].[Budget ] +5 THEN 255 
END, 
VISIBLE = 1 
SELECT 
{ [Measures].[YTD], [Measures].[Budget ] } 
ON COLUMNS, 

{ { [Location].[Location].&[7], [Location].[Location].&[12], [Location].[Location].&[11], [Location].[Location].&[19], [Location].[Location].&[17], [Location].[Location].&[16], [Location].[Location].&[9], [Location].[Location].&[18] },{[Location].[Location].[All]} } 
ON ROWS 

FROM [Cube1] 

** здесь ==> [Measures] [Наивысший], [Measures] [Бюджет] рассчитываются член я хочу привести, как в

.. coulmns ===> ytd, budget, nov, dec, jan, feb. ,,,,,,,,,, октябрь и строки ====> местоположения и общее количество (в среднем по всем местоположениям)

я получаю решение, подобное запросу mdx **

ответ

0

Ваше понятие «UNION» не будет работать по 2 основным причинам:

1. Вы можете не члены профсоюза из разных иерархий. 2. Структуры запросов разные.

Единственный способ увидеть их «бок о бок» - это открыть запросы в двух разных окнах.

Вместо этого, если вы просто хотели видеть объединенное представление мер и членов, использовать один из запросов ниже:

//Go for this if you want to see the Locations in output 

WITH MEMBER [Measures].[Budget ] AS IIF(avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)), 
             avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)),0.00), 

MEMBER [Measures].[YTD] AS IIF(avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null))<>null, 
           avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null)),0.00), 
FORMAT_STRING = "Standard", 
BACK_COLOR = CASE WHEN [YTD] = 0 THEN /*White*/16777215 /*White*/ 
WHEN [YTD] <= [Measures].[Budget ] THEN 65408 
    WHEN [YTD]<= [Measures].[Budget ] +5 THEN 65535 
    WHEN [YTD]> [Measures].[Budget ] +5 THEN 255 
END, 
VISIBLE = 1 


SELECT 
{ [Measures].[YTD], [Measures].[Budget ], [Measures].[Labour %] } 
ON COLUMNS, 
{ [Last Year] } 
* 
{ { [Location].[Location].&[7], 
[Location].[Location].&[12], 
[Location].[Location].&[11], 
[Location].[Location].&[19], 
[Location].[Location].&[17], 
[Location].[Location].&[16], 
[Location].[Location].&[9], 
[Location].[Location].&[18] }, 
{[Location].[Location].[All]} } 
ON ROWS 
FROM [Cube1] 

ИЛИ

//A cleaner one. Go for this if you don't want to see the Locations in output 

WITH MEMBER [Measures].[Budget ] AS IIF(avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)), 
             avg([Last Year],IIF(([Measures].[Budget]>0),[Measures].[Budget],null)),0.00), 

MEMBER [Measures].[YTD] AS IIF(avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null))<>null, 
           avg([Last Year], IIF(([Measures].[Labour %]>0),[Measures].[Labour %],null)),0.00), 
FORMAT_STRING = "Standard", 
BACK_COLOR = CASE WHEN [YTD] = 0 THEN /*White*/16777215 /*White*/ 
WHEN [YTD] <= [Measures].[Budget ] THEN 65408 
    WHEN [YTD]<= [Measures].[Budget ] +5 THEN 65535 
    WHEN [YTD]> [Measures].[Budget ] +5 THEN 255 
END, 
VISIBLE = 1 


SELECT 
{ [Measures].[YTD], [Measures].[Budget ], [Measures].[Labour %] } 
ON COLUMNS, 
{ [Last Year] } ON ROWS 
FROM [Cube1] 
WHERE 
{ { [Location].[Location].&[7], 
[Location].[Location].&[12], 
[Location].[Location].&[11], 
[Location].[Location].&[19], 
[Location].[Location].&[17], 
[Location].[Location].&[16], 
[Location].[Location].&[9], 
[Location].[Location].&[18] }, 
{[Location].[Location].[All]} }