2015-07-03 55 views
0

以下是我的MDX,它在SQL Server环境中完美执行。现在,我想创建一个使用SSRS的动态报告,通过从参数中选择不同年份的结果。我创建了一个名为'FY'的参数,我想通过这个参数传递每年的值,这就是为什么我将这个MDX作为表达式传递并得到如下错误:“Query(1,385)Parser:'MEMBER'的语法不正确”。我不知道我在做什么错在哪里?在此先感谢使用MDX如何使用参数创建动态报告

"WITH                    "+ 
"MEMBER [Total] AS                 "+ 
"SUM({[Measures].[July],[Measures].[August],[Measures].[September],    "+ 
"[Measures].[October], [Measures].[November],          "+ 
"[Measures].[December],[Measures].[January],[Measures].[February],     "+ 
"[Measures].[March],[Measures].[April],            "+ 
"[Measures].[May],[Measures].[June]}, [Dim Account].[Account Type].currentmember), "+ 
"MEMBER [Percent] AS                "+ 
"Total/SUM({[Measures].[July],[Measures].[August],[Measures].[September],   "+ 
"[Measures].[October], [Measures].[November],          "+ 
"[Measures].[December],[Measures].[January],[Measures].[February],     "+ 
"[Measures].[March],[Measures].[April],            "+ 
"[Measures].[May],[Measures].[June]}, [Dim Account].[Account Type].[Income]),  "+ 
"MEMBER [Dim Account].[Account Type].[Gross Profit] AS        "+ 
" [Dim Account].[Account Type].[Income] -           "+ 
"[Dim Account].[Account Type].[Cost of Sales],          "+ 
"MEMBER [Dim Account].[Account Type].[Operating Profit] AS       "+ 
" [Dim Account].[Account Type].[Gross Profit] -         "+ 
"[Dim Account].[Account Type].[Expenses],           "+ 
"MEMBER [Dim Account].[Account Type].[Net Profit] AS        "+ 
" [Dim Account].[Account Type].[Operating Profit] +        "+ 
"[Dim Account].[Account Type].[Other Income] -          "+ 
"[Dim Account].[Account Type].[Other Expense],          "+ 
"MEMBER [Dim Account].[Account Type].[EBITDA] AS         "+ 
" [Dim Account].[Account Type].[Net Profit] +          "+ 
"[Dim Account].[HierarchyAccount].[Account Activity].        "+ 
"&[Profit and Loss]&[Expenses]&[Interest] +           "+ 
"[Dim Account].[HierarchyAccount].[Account Activity].        "+ 
"&[Profit and Loss]&[Cost of Sales]&[Depreciation]+         "+ 
"[Dim Account].[HierarchyAccount].[Account Activity].        "+ 
"&[Profit and Loss]&[Expenses]&[Depreciation]+          "+ 
"[Dim Account].[HierarchyAccount].[Account Activity].        "+ 
"&[Profit and Loss]&[Expenses]&[Amortisation],          "+ 
"SELECT {[Measures].[July],[Measures].[August],[Measures].[September],    "+ 
"[Measures].[October], [Measures].[November],          "+ 
"[Measures].[December],[Measures].[January],[Measures].[February],     "+ 
"[Measures].[March],[Measures].[April],            "+ 
"[Measures].[May],[Measures].[June], Total, [Percent]} ON COLUMNS,     "+ 
" {                     "+ 
" [Dim Account].[Account Type].&[Profit and Loss]&[Income],      "+ 
" [Dim Account].[Account Type].&[Profit and Loss]&[Cost of Sales],    "+ 
"[Dim Account].[Account Type].[Gross Profit],          "+ 
" [Dim Account].[Account Type].&[Profit and Loss]&[Expenses],      "+ 
"[Dim Account].[Account Type].[Operating Profit],         "+ 
" [Dim Account].[Account Type].&[Profit and Loss]&[Other Income],     "+ 
" [Dim Account].[Account Type].&[Profit and Loss]&[Other Expense],    "+ 
"[Dim Account].[Account Type].[Net Profit],           "+ 
"[Dim Account].[Account Type].[EBITDA]} ON ROWS          "+ 
"FROM [DSV_IncomeStmt]                "+ 
"where [Dim Yearto Date].[Fiscal Year].&["+Parameters!FY.Value+"] " 
+0

你应该具有其中应以表矩​​阵消耗的数据集的MDX。 FY持有的参数是什么?请举个例子。 – SouravA

回答

1

的表达已经相当完善,除了“”在每一个部件的端部。例如,查看MEMBER语句a的结尾,必须从每个MEMBER计算中删除

除此之外,所有内容都是完美的。

"WITH                    "+ 
"MEMBER [Total] AS                 "+ 
"SUM({[Measures].[July],[Measures].[August],[Measures].[September],    "+ 
"[Measures].[October], [Measures].[November],          "+ 
"[Measures].[December],[Measures].[January],[Measures].[February],     "+ 
"[Measures].[March],[Measures].[April],            "+ 
"[Measures].[May],[Measures].[June]}, [Dim Account].[Account Type].currentmember) "+ 
0

使用公式,而不是查询脚本:

="SELECT [Measures].[July] ON COLUMNS, 
[Dim Account].[Account Type].&[Profit and Loss]&[Income] ON ROWS 
FROM [DSV_IncomeStmt] 
where [Dim Yearto Date].[Fiscal Year].&["+param+"]"  
+0

我编辑了我的问题。顺便说一句,我已经尝试并获得语法错误,请再次看看我的问题。谢谢 – SHAMIM

+0

你确保你的查询在ssrs之外工作吗?非常奇怪的语法:[Dim Account]。[Account Type]。&[Profit and Loss]&[Cost of Sales]。它指向什么? – sen77

0

正如旁白 - 在每行的开始增加你的空间 - 目前你正在做一个非常非常大的字符串有很多的空白。

这是一种更好的方法来创建每行开始一个空格:

" WITH"+ 
" MEMBER [Total] AS"+                 
" SUM({[Measures].[July],[Measures].[August],[Measures].[September],"+     
" [Measures].[October], [Measures].[November],"+          
" [Measures].[December],[Measures].[January],[Measures].[February],"+     
" [Measures].[March],[Measures].[April],"+            
" [Measures].[May],[Measures].[June]}, [Dim Account].[Account Type].currentmember)"+ 
" MEMBER [Percent] AS"+ 
... 
...