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

Sql 交叉连接相同的层次结构列,sql,sql-server-2012,data-cube,Sql,Sql Server 2012,Data Cube,我有一个具有以下层次结构的SQL数据立方体 我想交叉加入Warehouse division并对Warehouse Desc进行编码 SELECT NON EMPTY { [Measures].[Total Value]} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON COLUMNS, NON EMPTY { [Combined].[Drill Down Path 4].[Ware

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

我想交叉加入Warehouse division并对Warehouse Desc进行编码

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.
它给我一个错误如下

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.
有没有人能提出更好的方法

请查找日历层次结构


您不需要交叉连接层次结构(这是不可能的)来完成您需要的工作。只需查询它的最低级别,就可以得到所有的家长

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] )

另外,您可能无法在SSMS查询结果查看器中看到它们,但如果您在多维数据集浏览器中使用查询,或在SSRS/其他工具中使用数据集,则会显示它们。

您可以使用Tail(现有[日历].[报告天数].[所有成员].&[All].&[WantInReport].Members,1]传递集合中的最后日期。项(0)


或者可以使用Format(Now()),它提供当前系统日期的字符串表示形式。但是,这取决于区域设置,因此您可能需要删除点/斜线。看

这个层次结构看起来有点奇怪……你这是什么意思?任何建议我希望在SSIS中使用此查询。当我选择最后一个级别时,它的工作就结束了。还有一个问题,我如何将当前日期传递给&[20141031]值?我使用以下查询来获取您提到的值。但它给了我一个错误,将成员[Measures].[Dayed]作为尾部(现有[Calendar].[Report Days].[All Members].&[All].&[WantInReport].Members,1)。项(0),格式为[InventoryAge]列上的{[Measures].[Dayed]},请附上日历层次结构的图片?通常,您通过以下方式获取最后日期:Tail(现有的[Calendar].[Days].members,1)。项(0)。但是,您的结构似乎有所不同。若要在度量值中获取其值,您需要Tail(现有[Calendar].[Days].members,1)。项(0)。memberValue