7

在行上,我基本上想选择层次结构的所有成员,但想将其中两个合并为一个。例如,成员将包括A, B, and C, 所以选择[Group].[Group].members会给我All, A, B, andC但我想得到All, A,and B&C, whereBC已合并到一个成员中。

这可能在查询中吗?

我正在使用的数据库存储有关订单运输速度、小包裹、小于卡车装载量和白手套的信息。我想合并小包裹和小于卡车的负载,这样我就可以获得两种运输速度的汇总数据。

我尝试创建一个计算成员:[Measures].[Not White Glove] as AGGREGATE([Order Product].[Ships Via Group].&[Small Parcel], [Order Product].[Ships Via Group].&[Less than Truck Load])但不确定如何使用它,就像我目前拥有的那样[Order Product].[Ships Via Group].members ON ROWS

当我([Measures].[Not White Glove], [Order Product].[Ships Via Group].&[White Glove], [Order Product].[Ships Via Group].&[All]) ON ROWS输入错误时Query (14, 11) The Ships Via Group hierarchy is used more than once in the Crossjoin function.

有没有更好的方法来解决这个问题/那个错误是什么意思?

4

1 回答 1

13

您看到的错误是因为您使用括号的语法:(a, b, c)定义一个元组,其中 a、b 和 c 分别是来自不同维度的成员。如果您尝试将这些成员联合在一起,则应使用简写:{a, b, c}.

现在,组合成员是可能的,尽管可能不像您想要的那样干净和容易。这是一种方法的示例,方法是创建一个新成员,然后Except从层次结构中排除(通过)原始成员。

WITH 
    SET [Combined] AS {
        [Customer].[Customer Geography].[Country].&[France], 
        [Customer].[Customer Geography].[Country].&[Germany]
    }
    MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined])
SELECT
    [Measures].[Internet Sales Amount] ON 0,
    Union(
        Except([Customer].[Customer Geography].[Country], [Combined]),
        [Customer].[Customer Geography].[France & Germany]
    ) ON 1
FROM [Adventure Works]

结果:

                  Internet Sales Amount
Australia                 $9,061,000.58
Canada                    $1,977,844.86
United Kingdom            $3,391,712.21
United States             $9,389,789.51
France & Germany          $5,538,330.05

希望这有助于您走上正轨。

于 2013-07-16T18:04:05.143 回答