MDX 列作为行

MDX Columns as rows

我有一个 MDX 查询,它给出了多年来不同类型的值(度量)的列表:

SELECT {
    [Calendar].[Year].[Year]    
} ON ROWS,
{
    Measures.ValueA,
    Measures.ValueB,
    Measures.ValueC
} ON COLUMNS
FROM [MyCube]

它产生以下结果:

Year | ValueA | ValueB | ValueC 
2005 |   5    |   10   |   7
2006 |   7    |   12   |   3
(...)

我想将度量视为列以获得以下结果:

Year | Value  | Quantity
2005 | ValueA |    5
2005 | ValueB |   10
2005 | ValueC |    7
2006 | ValueA |    7
2006 | ValueB |   12
2006 | ValueC |    3

这组值是不变的,所以我尝试了以下方法:

WITH
SET [ValueIds] AS { [1], [2], [3] }

MEMBER [Quantity] AS
CASE 
    WHEN [ValueIds].CurrentMember.MEMBERVALUE = 1 THEN Measures.ValueA
    WHEN [ValueIds].CurrentMember.MEMBERVALUE = 2 THEN Measures.ValueB
    WHEN [ValueIds].CurrentMember.MEMBERVALUE = 3 THEN Measures.ValueC
END

SELECT {
    [Calendar].[Year].[Year]
    * [ValueIds]
} ON ROWS,
{
    [Quantity]
} ON COLUMNS
FROM [MyCube]

然而运气不佳,因为 "CurrentMember" 在这种情况下无法识别...

无论如何,您必须在列中设置任何内容,将任何其他层次结构中的所有成员放在那里:

select
 [ExtraDimension].[ExtraHierarchy].[ExtraLevel].[All] on 0,
 [Calendar].[Year].[Year].Member * {[Measures].[ValueA],[Measures.ValueB],[Measures.ValueC]} on 1    
from [MyCube]

我以与 Danylo 相同的方式使用了一个额外的维度,我猜你想要重命名一些度量,但我可能是错的:

WITH
  MEMBER Measures.[1] AS Measures.ValueA
  MEMBER Measures.[2] AS Measures.ValueB
  MEMBER Measures.[3] AS Measures.ValueC
SELECT 
    [ExtraDimension].[ExtraHierarchy].[ExtraLevel].[All]  ON 0,
    [Calendar].[Year].[Year]
    * {
       Measures.[1],
       Measures.[2],
       Measures.[3]
      } ON 1
FROM [MyCube];