MDX1:

SELECT
NON EMPTY {Hierarchize(
{
[Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]}
)
}
ON COLUMNS, NON EMPTY {Hierarchize(
{
CROSSJOIN({[年月表].[时间].[年]}
,CROSSJOIN({[年月表].[月份].[月份]}
,CROSSJOIN( {[组织架构表].[组织编码].[组织编码]},
CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
)
)
)
) ) }
)
}
ON ROWS
FROM [FinBPCube]

效果:

MDX常用几种查询对比-LMLPHP

MDX1 不用CrossJoin:

SELECT
NON EMPTY {Hierarchize(
{
[Measures].[年初数 的总和], [Measures].[期末数 的总和], [Measures].[本期发生数 的总和]}
)
}
ON COLUMNS, NON EMPTY {Hierarchize(
{
([年月表].[时间].[年]
,[年月表].[月份].[月份]
,[组织架构表].[组织编码].[组织编码]
,[组织架构表].[组织名称].[组织名称]
,[账簿表].[账簿名称].[账簿名称]
,[损益视图].[项目名称].[项目名称]
,[资产负债视图].[资产项目].[资产项目]
) }
)
}
ON ROWS
FROM [FinBPCube]

和上面一样效果

MDX常用几种查询对比-LMLPHP

MDX2:

SELECT
NON EMPTY {Hierarchize( {
CROSSJOIN( [年月表].[时间].[年] ,
{[年月表].[月份].[月份]} ) }
)
}
ON COLUMNS, NON EMPTY {Hierarchize(
{ CROSSJOIN( {[组织架构表].[组织编码].[组织编码]},
CROSSJOIN({[组织架构表].[组织名称].[组织名称]}
,CROSSJOIN({[账簿表].[账簿名称].[账簿名称]}
,CROSSJOIN({[损益视图].[项目名称].[项目名称]} ,{[资产负债视图].[资产项目].[资产项目]})
)
)
) }
)
}
ON ROWS
FROM [FinBPCube]
where (
[Measures].[本期发生数 的总和])

效果:

MDX常用几种查询对比-LMLPHP

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

MDX常用几种查询对比-LMLPHP

但是注意:

MDX常用几种查询对比-LMLPHP

05-06 05:55