您可以将不使用的任何层次结构的默认成员放在列轴上。如果你的立方体中有e。 G。等级制度[Geography].[City]
,其中有默认成员[Geography].[City].&[All]
,您的查询可能如下所示:
SELECT [Geography].[City].&[All]
ON COLUMNS,
{ [Measures].[Meas1], [Measures].[Meas2] }
*
{ [Date].[Month].[D1], [Date].[Month].[D2], [Date].[Month].[D3] }
ON ROWS
FROM [YourCube]
实际上,问题在于 MDX 中的轴必须按正确的顺序排列,如果不包含之前的所有轴,则查询中可能没有轴。由于列轴是第二个(编号为 1,因为列轴的编号从 0 开始),因此列轴必须存在。所以问题是你必须将一个非空集放入列轴中。因为总是有一个隐式切片器轴包含默认成员(通常是All
查询中未提及的所有层次结构的成员),此解决方案的想法是将其中任意一个移动到列轴,使其成为非空集而不改变结果 - 如果您使用 e.members),则会发生这种情况。 G。[Geography].[City].Members
,因为那时的值将按城市进行细分。
如果您想将度量和日期放入列轴中,这会容易得多,因为这是第一个轴。那么查询可能是:
SELECT { [Measures].[Meas1], [Measures].[Meas2] }
*
{ [Date].[Month].[D1], [Date].[Month].[D2], [Date].[Month].[D3] }
ON COLUMNS
FROM [YourCube]
如果您不需要这些值,您可以在列上使用空集,如下所示:
SELECT {}
ON COLUMNS,
{ [Measures].[Meas1], [Measures].[Meas2] }
*
{ [Date].[Month].[D1], [Date].[Month].[D2], [Date].[Month].[D3] }
ON ROWS
FROM [YourCube]
但是这样你就只有行标题,而列中也没有值列。
请注意,根据 MDX 的概念,查询可以有零、一、二、三或更多轴。大多数客户端工具(包括 SSMS)都难以显示具有两个以上轴的结果集。但这是客户端工具的限制,而不是 MDX 的限制。