MDX查询 - 切片中的“IN”运算符是什么?

时间:2013-10-09 23:08:04

标签: mdx

所以,我仍然是MDX的新手(我来自mssql),但这个项目要求我与MDX数据库通信。因此,我继承了一个查询,如下所示:

SELECT NON EMPTY
{
    [Measures].[Time Spent]
} ON COLUMNS, 
NON EMPTY
{
    [Consultant].[Account Name].[Account Full Name].ALLMEMBERS * 
    [Consultant].[Activity Full Name].[Activity Full Name].ALLMEMBERS * 
    [Consultant].[Description].[Description].ALLMEMBERS * 
    [Consultant].[Engineer Full Name].[Engineer Full Name].ALLMEMBERS
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM  
( 
    SELECT 
    ( [Date].[Date].&[2013-09-03T00:00:00] : [Date].[Date].&[2013-10-19T00:00:00] ) ON COLUMNS,
    (
        [Consultant].[Engineer Full Name].&[PERSON], 
        [Consultant].[Account Full Name].&[ACCOUNT],
    ) ON ROWS
FROM [Data]
) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS;

显然,日期,PERSON和ACCOUNT实际上是从系统中较高的位置传入的参数,但您希望得到这个想法。

此查询正在运行(感谢之前的SO问题正在回答 - 谢谢!) - 我收到数据,这是我想要的数据。但是,我刚收到一个请求,可以从多个帐户返回结果。我真的希望能够修改该查询以表明帐户全名是[帐户]或[其他帐户]或[其他不同的帐户],但只是附加查询似乎被视为AND?有没有办法对这些值执行OR或IN? (也就是说,工程师过滤的子查询是一个值,帐户名是一个。)

我认识到,就我的时间而言,更简单的方法是运行上述查询n次并将结果集连接在一起,但我认为这也是丑陋的方式。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道CrossJoin功能是否适用于你的情况(不是你需要实现的) 但你可以尝试一下CROSSJOIN

您的子选择可能会像这样编辑:

...
SELECT 
    ( [Date].[Date].&[2013-09-03T00:00:00] : [Date].[Date].&[2013-10-19T00:00:00] ) ON COLUMNS,
    {[Consultant].[Engineer Full Name].&[PERSON]} *
    {[Consultant].[Account Full Name].&[ACCOUNT], 
     [Consultant].[Account Full Name].&[OTHER ACCOUNT] , 
     [Consultant].[Account Full Name].&[DIFFERENT OTHER ACCOUNT]} ON ROWS
...