MDX常用几种查询对比

MDX1:

SELECT 
NON EMPTY {Hierarchize(
                {
                [Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    CROSSJOIN({[年月表].[时间].[]}
                ,CROSSJOIN({[年月表].[月份].[月份]}
                    ,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, 
                                    CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
                                                ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
                                                ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
                                                            )
                                                ) 
                                )
                            )

              )

}
    )
          }
 ON ROWS
FROM [FinBPCube]
View Code

效果:

 

MDX1 不用CrossJoin:

SELECT 
NON EMPTY {Hierarchize(
                {
                [Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]} 
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    ([年月表].[时间].[]
    ,[年月表].[月份].[月份]
    ,[组织架构表].[组织编码].[组织编码]
    ,[组织架构表].[组织名称].[组织名称]
    ,[账簿表].[账簿名称].[账簿名称]
    ,[损益视图].[项目名称].[项目名称]
    ,[资产负债视图].[资产项目].[资产项目]
    )

}
    )
          }
 ON ROWS
FROM [FinBPCube]
View Code

和上面一样效果

 

 

MDX2:

SELECT 
NON EMPTY {Hierarchize(
                
                {
                CROSSJOIN( [年月表].[时间].[]    ,
                {[年月表].[月份].[月份]} )
                
                    
                }
                    )
          }
    ON COLUMNS,

    NON EMPTY {Hierarchize(
{
    
                    CROSSJOIN( {[组织架构表].[组织编码].[组织编码]}, 
                                    CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
                                                ,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
                                                ,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
                                                            )
                                                ) 
                                )
                

}
    )
          }
 ON ROWS
FROM [FinBPCube]
where (
[Measures].[本期发生数 的总和]) 
View Code

效果:

 

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].[本期发生数 的总和]) 
View Code

但是注意:

 

posted on 2019-03-25 10:55  Neo0820  阅读(253)  评论(0编辑  收藏  举报

导航