2010-01-11 7 views
2

У меня есть этот MDX запрос (на основе образца базы данных Foodmart):MDX: Как превратить кортежи с несколькими членами в кортежи с одним членом?

SELECT 
{[Measures].[Profit]} ON COLUMNS, 
{CROSSJOIN([Product].[All Products].Children, [Time].[1997].Children)} ON ROWS 
FROM [Sales] 

Это создает результат, как этот:

[Product].[Product Family] [Time].[Year] [Time].[Quarter] [Measures].[Profit] 
--------------------------+-------------+----------------+------------------- 
Drink      |1997   |Q3    |7203.3445 
Drink      |1997   |Q4    |8005.2245 
Food      |1997   |Q1    |60814.47140000001 
Food      |1997   |Q2    |57323.3736 

То, что я хотел бы иметь, это:

[Product Family],[Year],[Quarter] [Measures].[Profit] 
---------------------------------+------------------- 
Drink, 1997, Q3     |7203.3445 
Drink, 1997, Q4     |8005.2245 
Food, 1997, Q1     |60814.47140000001 
Food, 1997, Q2     |57323.3736 

Я знаю, что могу использовать SetToStr() для сериализации заголовков строк в одну строку. Итак, теперь я хотел бы использовать этот результат в качестве rowheader: в основном, превращая каждый кортеж из исходных многочастных кортежей на оси ROW в кортеж с одним членом, значение who'se представляет собой объединение имен исходных членов. Так что в основном это:

SELECT 
{[Measures].[Profit]} ON COLUMNS, 
SetToStr(
    {CROSSJOIN([Product].[All Products].Children, [Time].[1997].Children)} 
) ON ROWS 
FROM [Sales] 

... но, конечно, это не работает, потому что SetToStr() возвращает строку, а не множество. Поэтому мне нужно каким-то образом «перевести» эту строку обратно в набор, но с одним членом.

Возможно ли это в стандартном MDX? Как? Я могу переработать набор результатов после его получения, но я мог бы использовать чистое решение MDX для решения этой проблемы.

ответ

4
WITH MEMBER [Measures].[name] 
AS [Product].currentMember.Name || ',' || [Time].CurrentMember.Name 
SELECT { [Measures].[name] , [Measures].[Sales]} ON COLUMNS 
,  ([Product].Children * [Time].Children) ON ROWS 
FROM [SteelWheelsSales] 

 Смежные вопросы

  • Нет связанных вопросов^_^