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]
。从一次计算一个成员开始,确保它工作,然后添加下一个成员。你会很快发现哪里出了问题,而不是一下子就把事情做好。