我们说我有两个简单的维度:
产品 - 具有ID和名称
销售员 - 具有ID和名称
我的事实表名为SALES,包含上述的ids。
假设产品X已由销售员A,B和C出售。
产品Y由销售员B,C和D
出售我想生成一个MDX查询,它会告诉我销售这两种产品的销售人员的姓名。在这种情况下,结果将是B和C
我的尝试:
select {null} on 0,
DESCENDANTS (
[Salesmen].[Name].children
) on 1
FROM [Test]
where (
{
(
[Products].[Name].&[X]
)
,
(
[Products].[Name].&[Y]
)
}
)
答案 0 :(得分:1)
请尝试嵌套exist
这样的功能:
SELECT
{} on 0,
EXISTS(
EXISTS(
{[Salesmen].[Name].MEMBERS}, //<<TRY THIS INSTEAD
{[Products].[Name].&[X]}
)
,{[Products].[Name].&[Y]}
)
ON 1
FROM [Test];
严格来说EXISTS
需要一个度量组的名称作为它的第三个参数:
SELECT
{} on 0,
EXISTS(
EXISTS(
{[Salesmen].[Name].MEMBERS} //<<TRY THIS INSTEAD
,{[Products].[Name].&[X]}
,"Reseller Sales" //<<replace with group name from your cube
)
,{[Products].[Name].&[Y]}
,"Reseller Sales" //<<replace with group name from your cube
)
ON 1
FROM [Test];
另一种方法是使用层次结构[Measures]
中的成员以及函数NonEmpty
和Intersect
:
SELECT
{} on 0,
INTERSECT(
NONEMPTY(
{[Salesmen].[Name].MEMBERS}
,([Products].[Name].&[X],[Measures].[SomeMeasureInYourCube])
)
,NONEMPTY(
{[Salesmen].[Name].MEMBERS}
,([Products].[Name].&[Y],[Measures].[SomeMeasureInYourCube])
)
)
ON 1
FROM [Test];
上述内容可能仅适用于仅限产品成员的简单元组
SELECT
{} on 0,
INTERSECT(
NONEMPTY(
{[Salesmen].[Name].MEMBERS}
,([Products].[Name].&[X])
)
,NONEMPTY(
{[Salesmen].[Name].MEMBERS}
,([Products].[Name].&[Y])
)
)
ON 1
FROM [Test];