7,388
社区成员
发帖
与我相关
我的任务
分享
/*上图代码:
金额USD前有下划线,是因为统计时要根据情况转换成万或亿等单位,加下划线,便于定义计算成员时使用不带下划线的名字,不知道是否还有更好的方法*/
WITH
MEMBER [Measures].[__金额USD] AS [Measures].[_金额USD]
MEMBER [Measures].[USD金额] AS round([Measures].[__金额USD]/10000,1),FORMAT_STRING ='#;;;-',SOLVE_ORDER=1
MEMBER [Measures].[__金额USD上期] AS ([Measures].[__金额USD],ParallelPeriod([时间].[年].[年],1,[时间].[年].CurrentMember)),SOLVE_ORDER=1
MEMBER [Measures].[USD上期金额] AS round([Measures].[__金额USD上期]/10000,1),SOLVE_ORDER=2
MEMBER [Measures].[USD同比] AS ([__金额USD]-[__金额USD上期])/[__金额USD上期],FORMAT_STRING='0.0%;;;-',SOLVE_ORDER=300
MEMBER [Measures].[USD环比] AS ([Measures].[__金额USD]/([Measures].[__金额USD],([时间].[月].CurrentMember.PrevMember),[时间].[时间].CurrentMember)-1),FORMAT_STRING='0.0%;;;-',SOLVE_ORDER=300
SELECT
{ [数据版本].[数据版本].&[0],[数据版本].[数据版本].&[1] }
*
{ [Measures].[USD金额],[Measures].[USD同比],[Measures].[USD环比] } ON COLUMNS
,
{ [时间].[月].members } ON ROWS
FROM [CUBE]
MEMBER [Measures].[__金额USD] AS
case [数据版本].[数据版本].CurrentMember
when [数据版本].[数据版本].&[0] Then ([数据版本].[数据版本].&[0],[Measures].[_金额USD])
when [数据版本].[数据版本].&[1] Then IIF(
([数据版本].[数据版本].&[1],[Measures].[_金额USD])
,([数据版本].[数据版本].&[1],[Measures].[_金额USD])
,([数据版本].[数据版本].&[0],[Measures].[_金额USD])
)
Else "Null"
End
member [时间].[月].[sum合计] as sum([时间].[月].[月].members,[Measures].CurrentMember),SOLVE_ORDER=1000
member [时间].[月].[Aggregate合计] as Aggregate([时间].[月].[月].members,[Measures].CurrentMember),SOLVE_ORDER=1000