为什么我会得到Parser:由于这里含糊不清,语句方言无法解决?

时间:2013-03-14 13:19:54

标签: ssas ssms mdx

我想在不同的行上获得两个不同的topcounts,猜猜我在某处想错了?

select{
([Measures].[Invoiced_DAm])
} on columns,

    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
    ),
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
    ) on rows

1 个答案:

答案 0 :(得分:1)

如何让它工作只需在花括号{ }

之间进行TOPCOUNT操作
select{
([Measures].[Invoiced_DAm])
} on columns,
{
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
    ),
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
    )
} on rows

为什么呢?因为它是MDX区分集合的方式:我们需要在明确列出元组的任何时候用大括号包围元组。 TOPCOUNT函数将返回(在本例中)Product维度中的前10个元组。

在您的情况下,TOPCOUNT(...), TOPCOUNT(...)对MDX没有任何意义(两组或元组列表,以逗号分隔)。

{TOPCOUNT(...), TOPCOUNT(...)}将告诉MDX您要显示来自两个TOPCOUNT语句的行集,因此您声明了一组集合,这本身就是一个集合。