我有一个MDX查询,它返回有冗余的值列表。我想获得不同的价值观。我曾尝试过多种方式使用Distinct功能,但它无法正常工作。
以下是查询:
WITH
MEMBER [Measures].[MU] AS
Mid
(
Right
(
[AG].[Dept].CurrentMember.Member_Caption
,4
)
,
Instr(Right([AG].[Dept].CurrentMember.Member_Caption,4),"_") + 1
)
SELECT
{[Measures].[MU]} ON COLUMNS
,[AG].[MU].Children HAVING
[Measures].[MU] <> "tive" ON ROWS
FROM [MyCube];
第三行基本上是取一个字符串并获取它的最后一部分。子部分侧重于我所关注的层次结构部分。有部分过滤掉列表中的值。
目前结果如下:
F
A
B
C
C
D
E
A
E
F
C
我希望列表是这样的:
A
B
C
D
E
F
有任何想法或建议吗?请帮忙。
编辑
添加AdvWrks
示例:
WITH
MEMBER [Measures].[aLetter] AS
Left
(
[Geography].[Country].CurrentMember.Member_Caption
,1
)
SELECT
{[Measures].[aLetter]} ON COLUMNS
,[Geography].[Country].[Country].MEMBERS ON ROWS
FROM [Adventure Works] ;
它返回以下内容,我认为游戏的目的是更改脚本,以便不包括英国或美国:
答案 0 :(得分:2)
这是一种针对AdvWrks多维数据集的技术:
WITH
MEMBER [Measures].[aLetter] AS
Left
(
[Geography].[Country].CurrentMember.Member_Caption
,1
)
SET [orderGeo] AS
Order
(
[Geography].[Country].[Country].MEMBERS
,[Measures].[aLetter]
,BDESC
)
MEMBER [Measures].[aRk] AS
Rank
(
[Geography].[Country].CurrentMember
,[orderGeo]
,[Measures].[aLetter]
)
SET [distinctCountries] AS
Filter
(
[orderGeo] AS x
,
x.CurrentOrdinal = [Measures].[aRk]
)
SELECT
[Measures].[aLetter] ON 0
,[distinctCountries] ON 1
FROM [Adventure Works];
答案 1 :(得分:0)
您可以使用GENERATE
清除集合中的重复项。我的Adventure Works服务器已关闭,因此这是我当前的多维数据集服务器中的一个简单示例。
WITH SET duplicates AS
{
[Client].[Status].&[Current],
[Client].[Status].&[Current],
[Client].[Status].&[Terminated],
[Client].[Status].&[Terminated]
}
SET noduplicates AS
GENERATE
(
duplicates,
{[Client].[Status].CURRENTMEMBER}
)
SELECT noduplicates ON 1,
{} ON 0
FROM [SomeCube]
成员将自然订购(如多维数据集设计中所指定)。如果您想要特定的排序,则必须输入ORDER
子句。
注意:如果第三个参数以GENERATE
提供,ALL
也可以保留重复项。