交叉连接相同层次结构的列

Cross join same hierarchy columns

我有一个 SQL 具有以下层次结构的数据立方体

我想交叉加入Warehouse division 和Code warehouse Desc。我写了一个MDX如下

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
   [Combined].[Drill Down Path 4].[Warehouse Division].MEMBERS*   [Combined].[Drill Down Path 4].[Code Warehouse Desc].MEMBERS
} 
DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

报错如下

Query (13, 8) The Drill Down Path 4 hierarchy is used more than once in the Crossjoin function.

任何人都可以提出更好的方法来做到这一点

请查找日历层次结构

您不需要交叉连接层次结构(这是不可能的)来执行您需要的操作。只查询它的最低层,你会得到所有 parents 也

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
     [Combined].[Drill Down Path 4].[Code Warehouse Desc].allMEMBERS
} 
 DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
 WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

PS。您可能无法在 SSMS 查询结果查看器中看到它们,但如果您在多维数据集浏览器中使用查询或在 SSRS/other 工具

中作为数据集,它们将会出现

您可以使用 Tail(Existing [Calendar].[Report Days].[All Members].&[All].&[WantInReport].members, 1).item(0 )

或者您可以使用 Format(Now()),它会为您提供当前系统日期的字符串表示形式。但是,这取决于语言环境,因此您可能需要删除 dots/slashes。参见 here