0

つまり、私はまだ 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 の質問に答えてくれたおかげで - ありがとう!) - データが返ってきました。これが必要なデータです。ただし、複数のアカウントから結果を返すことができるようにするというリクエストがありました。そのクエリを変更して、アカウントのフルネームが [ACCOUNT] または [OTHER ACCOUNT] または [DIFFERENT OTHER ACCOUNT] であることを示したいのですが、クエリを追加するだけで AND として扱われるようです。これらの値に対して OR または IN を実行する方法はありますか? (つまり、エンジニアによるサブクエリ フィルタリングは 1 つの値であり、アカウント名は 1 つの複数です。)

私の時間の限り、上記のクエリを n 回実行して結果セットを連結する方が簡単な方法だと思いますが、それも醜い方法だと思います。

ありがとう!

4

1 に答える 1

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
...
于 2013-10-10T08:33:26.867 に答える