層次結構

 

如圖,在年月表中建立了層次結構html

當須要實現傳統的年、月、按列查詢的時候,MDX須要藉助 時間裏面的年和時間外面的月份,或者時間外面的年和時間裏面的月份,經過CROSSJOIN函數進行拼接。架構

SELECT 
NON EMPTY {Hierarchize(
                {[Measures].[年初數 的總和], [Measures].[期末數 的總和], [Measures].[本期發生數 的總和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    CROSSJOIN({[年月表].[時間].[]}
                ,CROSSJOIN({[年月表].[月份].[月份]}
                    ,CROSSJOIN( {[組織架構表].[組織編碼].[組織編碼]}, 
                                    CROSSJOIN({[組織架構表].[組織名稱].[組織名稱]}
                                                ,CROSSJOIN({[帳簿表].[帳簿名稱].[帳簿名稱]}
                                                ,CROSSJOIN({[損益視圖].[項目名稱].[項目名稱]} ,{[資產負債視圖].[資產項目].[資產項目]})
                                                            )
                                                ) 
                                )
                            )

              )

}
    )
          }
 ON ROWS
FROM [FinBPCube]

這樣年月是獨立的兩列函數

 

 

若是同時使用時間層次結構裏面的年、月,則會發生查詢出來的結果會把年、月份都會放到同一列中。post

SELECT 
NON EMPTY {Hierarchize(
                {[Measures].[年初數 的總和], [Measures].[期末數 的總和], [Measures].[本期發生數 的總和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    CROSSJOIN({[年月表].[時間].[], [年月表].[時間].[月份]}
                    ,CROSSJOIN( {[組織架構表].[組織編碼].[組織編碼]}, 
                                    CROSSJOIN({[組織架構表].[組織名稱].[組織名稱]}
                                                ,CROSSJOIN({[帳簿表].[帳簿名稱].[帳簿名稱]}
                                                ,CROSSJOIN({[損益視圖].[項目名稱].[項目名稱]} ,{[資產負債視圖].[資產項目].[資產項目]})
                                                            )
                                                ) 
                                )
                            )

              

}
    )
          }
 ON ROWS
FROM [FinBPCube]

這樣是混合一列編碼

 

 

SSAS系列隨筆

相關文章
相關標籤/搜索