Sql server 什么´;这个MDX查询错误是什么:查询(3,8)?

Sql server 什么´;这个MDX查询错误是什么:查询(3,8)?,sql-server,ssis,ssas,mdx,Sql Server,Ssis,Ssas,Mdx,我试图执行这个查询,但我不明白它出了什么问题 WITH MEMBER Time.T1 AS 'SUM([Time].&[TY].&[0]:[Time].&[TY].&[11])' MEMBER Time.T2 AS 'SUM([Time].&[TY].&[0]:[Time].&[TY].&[11])' MEMBER Measures.Col1 AS '(Scenario.&[PO], [T1], [GNAm])' M

我试图执行这个查询,但我不明白它出了什么问题

 WITH MEMBER Time.T1 AS 'SUM([Time].&[TY].&[0]:[Time].&[TY].&[11])' 
MEMBER Time.T2 AS 'SUM([Time].&[TY].&[0]:[Time].&[TY].&[11])' 
MEMBER Measures.Col1 AS '(Scenario.&[PO], [T1], [GNAm])' 
MEMBER Measures.Col2 AS '(Scenario.&[ACFC], [T2], [GNAm])' 
MEMBER Measures.Diff AS '[Col2] - [Col1]' 
MEMBER Measures.Perc AS 'IIF([Col1] = 0, [Col1], [Diff] / [Col1])', FORMAT_STRING = '#0.00%' 
SELECT {[Col1], [Col2], [Diff], [Perc]} on Columns, Descendants([Account].[Account].[Expenses]) on Rows 
FROM DS_GNA 
WHERE (&[44026-90],&[010000])
获取错误消息:

Error: Query (3, 8) Parser: The syntax for '&' is incorrect.

基本上,下面只是重复对你的问题的评论。我已经完全排除了您的
WHERE
子句,最好先看看它是否可以正常运行。正如TTeeple所提到的,我刚刚在键值之前加入了符号:

WITH 
  MEMBER Time.T1 AS 
    Sum([Time].[TY].&[0] : [Time].[TY].&[11]) 
  MEMBER Time.T2 AS 
    Sum([Time].[TY].&[0] : [Time].[TY].&[11]) 
  MEMBER Measures.Col1 AS 
    (
      Scenario.[PO]
     ,[T1]
     ,[GNAm]
    ) 
  MEMBER Measures.Col2 AS 
    (
      Scenario.[ACFC]
     ,[T2]
     ,[GNAm]
    ) 
  MEMBER Measures.Diff AS 
    [Col2] - [Col1] 
  MEMBER Measures.Perc AS 
    IIF
    (
      [Col1] = 0
     ,[Col1]
     ,
      [Diff] / [Col1]
    ) 
   ,FORMAT_STRING = '#0.00%' 
SELECT 
  {
    [Col1]
   ,[Col2]
   ,[Diff]
   ,[Perc]
  } ON COLUMNS
 ,Descendants([Account].[Account].[Expenses]) ON ROWS
FROM [DS_GNA];

基本上,下面只是重复对你的问题的评论。我已经完全排除了您的
WHERE
子句,最好先看看它是否可以正常运行。正如TTeeple所提到的,我刚刚在键值之前加入了符号:

WITH 
  MEMBER Time.T1 AS 
    Sum([Time].[TY].&[0] : [Time].[TY].&[11]) 
  MEMBER Time.T2 AS 
    Sum([Time].[TY].&[0] : [Time].[TY].&[11]) 
  MEMBER Measures.Col1 AS 
    (
      Scenario.[PO]
     ,[T1]
     ,[GNAm]
    ) 
  MEMBER Measures.Col2 AS 
    (
      Scenario.[ACFC]
     ,[T2]
     ,[GNAm]
    ) 
  MEMBER Measures.Diff AS 
    [Col2] - [Col1] 
  MEMBER Measures.Perc AS 
    IIF
    (
      [Col1] = 0
     ,[Col1]
     ,
      [Diff] / [Col1]
    ) 
   ,FORMAT_STRING = '#0.00%' 
SELECT 
  {
    [Col1]
   ,[Col2]
   ,[Diff]
   ,[Perc]
  } ON COLUMNS
 ,Descendants([Account].[Account].[Expenses]) ON ROWS
FROM [DS_GNA];

你想用WHERE子句实现什么?我怀疑这是一个明确的问题。在MDX中,符号(&)用于区分成员密钥和成员名称。为什么您有
[Time].&[TY].&[0]
?我假设TY是你时间维度中的一个属性?我希望看到
[Time].[TY].&[0]
。从一次计算一个成员开始,确保它工作,然后添加下一个成员。你会很快发现哪里出了问题,而不是一下子就把事情做好。你想用WHERE子句实现什么?我怀疑这是一个明确的问题。在MDX中,符号(&)用于区分成员密钥和成员名称。为什么您有
[Time].&[TY].&[0]
?我假设TY是你时间维度中的一个属性?我希望看到
[Time].[TY].&[0]
。从一次计算一个成员开始,确保它工作,然后添加下一个成员。你会很快发现哪里出了问题,而不是一下子就把事情做好。