我有这个MDX查询,我想在sql MDX中运行:
WITH
MEMBER [Measures].[NMESACT1] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+01])
MEMBER [Measures].[NMESACT2] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+02])
MEMBER [Measures].[NMESACT3] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+03])
MEMBER [Measures].[NMESACT4] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+04])
MEMBER [Measures].[NMESACT5] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+05])
MEMBER [Measures].[NMESACT6] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+06])
MEMBER [Measures].[NMESACT7] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+07])
MEMBER [Measures].[NMESACT8] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+08])
MEMBER [Measures].[NMESACT9] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+09])
MEMBER [Measures].[NMESACT10] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+10])
MEMBER [Measures].[NMESACT11] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+11])
MEMBER [Measures].[NMESACT12] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[+CStr(2018)+12])
但我总是得到
查询(156,44)解析器:','的语法是不正确的。 (WITH 会员[措施]。[NMESACT1] AS([措施]。[ValorBase],[BSC Fact]。[Periodo]。& [+ CStr(2018)+01])等......
我做错了什么?此致
答案 0 :(得分:1)
理想情况下,您只需在执行查询的任何工具中构建动态查询。这种方法应该表现最佳,因为下面使用的StrToMember
函数会降低查询速度。
MEMBER [Measures].[NMESACT1] AS ([Measures].[ValorBase],[BSC Fact].[Periodo].&[201801])
但是如果由于某种原因它需要是一个带有@Yr参数的静态查询,你可以传入" 2018"你可以这样做:
MEMBER [Measures].[NMESACT1] AS ([Measures].[ValorBase],StrToMember("[BSC Fact].[Periodo].&["+CStr(@Yr)+"01]",CONSTRAINED))
但是,如果您希望查询在没有参数的情况下工作,并且没有客户端工具构建查询,那么以下内容应该有效:
MEMBER [Measures].[NMESACT1] AS ([Measures].[ValorBase],StrToMember("[BSC Fact].[Periodo].&["+CStr(2018)+"01]",CONSTRAINED))