MDX常用几种查询对比
MDX1:
SELECT NON EMPTY {Hierarchize( { [Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} ) } ON COLUMNS, NON EMPTY {Hierarchize( { CROSSJOIN({[年月表].[时间].[年]} ,CROSSJOIN({[年月表].[月份].[月份]} ,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, CROSSJOIN({[组织架构表].[组织名称].[组织名称]} ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]} ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]}) ) ) ) ) ) } ) } ON ROWS FROM [FinBPCube]
效果:
MDX1 不用CrossJoin:
SELECT NON EMPTY {Hierarchize( { [Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} ) } ON COLUMNS, NON EMPTY {Hierarchize( { ([年月表].[时间].[年] ,[年月表].[月份].[月份] ,[组织架构表].[组织编码].[组织编码] ,[组织架构表].[组织名称].[组织名称] ,[账簿表].[账簿名称].[账簿名称] ,[损益视图].[项目名称].[项目名称] ,[资产负债视图].[资产项目].[资产项目] ) } ) } ON ROWS FROM [FinBPCube]
和上面一样效果
MDX2:
SELECT NON EMPTY {Hierarchize( { CROSSJOIN( [年月表].[时间].[年] , {[年月表].[月份].[月份]} ) } ) } ON COLUMNS, NON EMPTY {Hierarchize( { CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, CROSSJOIN({[组织架构表].[组织名称].[组织名称]} ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]} ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]}) ) ) ) } ) } ON ROWS FROM [FinBPCube] where ( [Measures].[本期发生数 的总和])
效果:
MDX3:
WITH SET MonArray AS {[年月表].[月份].[月份]} MEMBER [年月表].[月份].[月汇总] AS AGGREGATE(MonArray) SELECT NON EMPTY {Hierarchize( { {MonArray,[年月表].[月份].[月汇总]} } ) } ON COLUMNS, NON EMPTY {Hierarchize( { CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, CROSSJOIN({[组织架构表].[组织名称].[组织名称]} ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]} ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]}) ) ) ) } ) } ON ROWS FROM [FinBPCube] where ( [Measures].[本期发生数 的总和])
但是注意: