如何在查询中将两个成员合并为一个?

时间:2013-07-16 16:33:29

标签: mdx

在行上,我基本上想要选择层次结构的所有成员,但希望将其中两个组合成一个。例如,成员会包含ABC,因此选择[Group].[Group].members会给我AllA,{{ 1}}和B但我希望获得CAll, A,,其中B&CB已合并为一个成员。

这可以在查询中吗?

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

我尝试创建一个计算成员:C但我不确定如何使用它,因为我目前有[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

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

1 个答案:

答案 0 :(得分:12)

您看到的错误是因为您使用括号的语法:(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

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