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];
我有一个 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];