【问题标题】:Parser: The statement dialect could not be resolved due to ambiguity解析器:由于歧义,无法解析语句方言
【发布时间】:2013-11-12 00:24:59
【问题描述】:

我使用SSASSql Server 2008 R2

我写了这个查询:

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

然后我使用 {} 这样的查询:

Select
{[Product].[Product Categories],[Product].[Category]}
on columns
From [Adventure Works]

我得到了这个错误:

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]

我得到了这个结果:

我想获取所有产品类别成员的总和默认度量

一列有总和。

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

我怎样才能得到这个结果?

【问题讨论】:

    标签: sql-server-2008-r2 ssas mdx


    【解决方案1】:

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

    如果你想得到你在顶部列出的结果,并排,试试:

    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]
    

    【讨论】:

    • 首先你的查询有这个错误:执行查询... Query (2, 1) 该函数需要一个元组集表达式为 1 参数。使用了字符串或数字表达式。执行完成
    • 在您的第二个查询中,您忘记了查询默认度量。您的查询结果只有两行没有任何列。
    • @loup 是的,我在我的问题中注意到了这一点,因为我不确定您是否真的打算选择默认成员。我已经更新它以在查询中包含默认成员。
    • @loup,对不起,我忘了在我的第一个查询中添加额外的括号。关于 MDX 的工作原理,这只是一件有趣的事情。这是一篇关于为什么在使用 * 交叉连接符号时需要括号的好文章:softwaremasons.com/MartinsBlog/tabid/74/EntryId/56/…
    猜你喜欢
    • 2013-03-02
    • 2012-05-03
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多