2015-02-05 38 views
1

我有一個SQL數據立方體以下層次交叉連接同一層次的列

enter image description here

我想CROSS JOIN倉庫劃分及代碼倉庫說明。我寫了一個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. 

任何機構可以建議一個更好的方式來做到這一點

請找壓延層次

它給了我一個錯誤enter image description here

+0

該層次結構看起來有點奇怪.... –

+0

你是什麼意思? 任何建議 – udaya726

回答

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 /其他工具中使用查詢,它們將出現

+0

我想在SSIS中使用此查詢。它的工作時,我選擇最後一級 – udaya726

+0

一個問題,我怎麼能將當前日期傳遞給&[20141031]值 – udaya726

0

您可以使用尾部(現有或者您可以使用Format(Now()),它可以使用Format(Now()),它可以使用Format(Now()),你是當前系統日期的字符串表示。但是,它取決於語言環境,因此您可能需要刪除點/斜線。見here

+0

我用下面的查詢來獲得您提到的值。但它給了我一個錯誤 與成員[度量]。[昨天]作爲尾(現有的[日曆]。[報告天]。[所有成員]。[[所有]。和[WantInReport] .MEMBERS,1).item (0) ,FORMAT_STRING ='yyyyMMdd' select {[Measures]。[Yesterday]} ON列 FROM [InventoryAge] – udaya726

+0

您可以附上您的Calendar Hierarchy的圖片嗎? 一般情況下,你該得到最後日期: 尾(現有[日曆] [日] .members,1。).Item(0) 但是,結構似乎有所不同。 要在度量中獲得它的值,您需要 尾(Existing [Calendar]。[Days] .members,1).Item(0).memberValue – George