在行上,我基本上想要选择层次结构的所有成员,但希望将其中两个组合成一个。例如,成员会包含A
,B
和C
,因此选择[Group].[Group].members
会给我All
,A
,{{ 1}}和B
但我希望获得C
和All, A,
,其中B&C
和B
已合并为一个成员。
这可以在查询中吗?
我正在使用的数据库存储有关订单运输速度,小包裹,小于卡车装载和白手套的信息。我想合并小包裹而不是卡车装载,这样我就可以在两种运输速度下获得汇总数据。
我尝试创建一个计算成员: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
有没有更好的方法来解决这个问题?这个错误是什么意思?
答案 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
希望这有助于您走上正确的轨道。