1

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

在此处输入图像描述

我想交叉加入仓库部门和代码仓库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.

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

请查找日历层次结构

在此处输入图像描述

4

2 回答 2

2

你不需要交叉加入层次结构(这是不可能的)来做你需要的。只需查询它的最低级别,您还将获得所有父母

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/其他工具中的数据集,它们会出现

于 2015-02-05T08:25:13.920 回答
0

您可以使用 Tail(Existing [Calendar].[Report Days].[All Members].&[All].&[WantInReport].members, 1).item(0) 传递集合中的最后一个日期

或者您可以使用 Format(Now()),它为您提供当前系统日期的字符串表示。但是,这取决于语言环境,因此您可能需要删除点/斜线。看这里

于 2015-02-05T09:47:03.790 回答