所以,我仍然是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次并将结果集连接在一起,但我认为这也是丑陋的方式。
谢谢!
答案 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
...