Sql server 2008 r2 解析器:由于歧义,无法解析语句方言

Sql server 2008 r2 解析器:由于歧义,无法解析语句方言,sql-server-2008-r2,ssas,mdx,Sql Server 2008 R2,Ssas,Mdx,我使用SSAS和sqlserver2008r2 我写下这个问题: Select [Product].[Product Categories],[Product].[Category] on columns From [Adventure Works] 我得到了这个错误: Executing the query ... Parser: The statement dialect could not be resolved due to ambiguity. Execution complete

我使用
SSAS
sqlserver2008r2

我写下这个问题:

Select
[Product].[Product Categories],[Product].[Category]
on columns
From [Adventure Works]
我得到了这个错误:

Executing the query ...
Parser: The statement dialect could not be resolved due to ambiguity.
Execution complete
Executing the query ...
Query (2, 2) Two sets specified in the  function have different dimensionality.
Execution complete
然后我使用{}像这样的查询:

Select
{[Product].[Product Categories],[Product].[Category]}
on columns
From [Adventure Works]
Select
([Product].[Product Categories],[Product].[Category])
on columns
From [Adventure Works]
我得到了这个错误:

Executing the query ...
Parser: The statement dialect could not be resolved due to ambiguity.
Execution complete
Executing the query ...
Query (2, 2) Two sets specified in the  function have different dimensionality.
Execution complete
然后我使用这个查询:

Select
{[Product].[Product Categories],[Product].[Category]}
on columns
From [Adventure Works]
Select
([Product].[Product Categories],[Product].[Category])
on columns
From [Adventure Works]
我得到了这个结果:

我希望获得所有产品类别成员的默认度量值总和

和一列具有总和

但是我需要一个有并排列的结果


如何获得此结果?

我不确定您使用的是什么度量,或者您是否只是尝试获取每个维度属性的all值,或者您是否想要这两个维度属性的每个可能属性。看起来您没有在问题中列出度量值,或者您正在使用默认度量值。如果有,只需将度量值放在下面查询的列中。您得到关于维度的错误是因为您要求它提供两个不同的维度层次结构。虽然这些值可能相同,但它们是两个不同的层次结构。你只需要一个交叉连接就可以了

如果您试图获得顶部列出的结果,请并排尝试:

Select {Measures.DefaultMember} on columns, 
{{[Product].[Product Category Name].[All]}*{[Product].[Category].[All]}在行上
来自[冒险作品]

如果您确实想要并列列出产品类别,您可以执行以下操作:

Select {Measures.DefaultMember} on columns, 
{[Product].[Product Categories].[All].children * [Product].[Category].children} on rows 
from [Adventure Works]

我不确定您使用的是什么度量,也不确定您是否只是尝试获取每个维度属性的all值,或者您是否希望为这两个维度属性提供每个可能的属性。看起来您没有在问题中列出度量值,或者您正在使用默认度量值。如果有,只需将度量值放在下面查询的列中。您得到关于维度的错误是因为您要求它提供两个不同的维度层次结构。虽然这些值可能相同,但它们是两个不同的层次结构。你只需要一个交叉连接就可以了

如果您试图获得顶部列出的结果,请并排尝试:

Select {Measures.DefaultMember} on columns, 
{{[Product].[Product Category Name].[All]}*{[Product].[Category].[All]}在行上
来自[冒险作品]

如果您确实想要并列列出产品类别,您可以执行以下操作:

Select {Measures.DefaultMember} on columns, 
{[Product].[Product Categories].[All].children * [Product].[Category].children} on rows 
from [Adventure Works]

首先,您的查询出现以下错误:正在执行查询。。。查询(2,1)函数要求1参数使用元组集表达式。使用了字符串或数字表达式。执行完成,在第二次查询中,您忘记了查询默认度量值。查询结果只有两行,没有任何列。@loup是的,我在我的问题中注意到了这一点,因为我不确定您是否真的要选择默认成员。我已将其更新为在查询中包含默认成员。@loup,对不起,我忘记在第一个查询中添加额外的括号。MDX的工作原理很有趣。下面是一篇关于为什么在使用*crossjoin符号时需要括号的好文章:首先,您的查询有以下错误:执行查询。。。查询(2,1)函数要求1参数使用元组集表达式。使用了字符串或数字表达式。执行完成,在第二次查询中,您忘记了查询默认度量值。查询结果只有两行,没有任何列。@loup是的,我在我的问题中注意到了这一点,因为我不确定您是否真的要选择默认成员。我已将其更新为在查询中包含默认成员。@loup,对不起,我忘记在第一个查询中添加额外的括号。MDX的工作原理很有趣。下面是一篇关于为什么在使用*交叉连接符号时需要括号的好文章: