1

レポート内に次の MDX クエリがあります。

select 
({ [Measures].[Total]})   on columns,
non empty
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
having [Measures].Total>100000 on rows
from [Monthly Summary]
where ([1 Date - Month End].[Month End Date].[Month].&[20120331])

これは、3 月に Total 値が 100k を超える行を選択しています。3 月または 2 月に Total 値が 100k を超える行を選択するにはどうすればよいですか?上記のクエリの結果と、前月が 100k を超える今月の値の結果を取得することを意味ます。

現在、SSRS の 2 つのデータセットでこれを行っており、一方をもう一方に結合して検索し、月 (Where 句) をレポート パラメーターから読み取ります。これは正しくありません。

更新: 3 月の [Total] 値が 100k を超える場合、または 2 月の [Total] 値が 100k を超える場合、クエリ結果で 3 月の合計値を確認する必要があります (2 番目のシナリオでは 100k 未満になる可能性があります)。

4

2 に答える 2

1

私があなたの要件を理解している場合、where 句の月、または where 句の合計が 100K を超える月の前の月の行が必要です。where 句は、Total メジャーに表示される値に影響するため、前月の値も表示したい場合は where 句に残すことはできません。行が 3 月のものか 2 月のものかを確認するには、次のように行に含める必要があります。

select 
({ [Measures].[Total]})   on columns,
non empty
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
* {[1 Date - Month End].[Month End Date].[Month].&[20120228],[1 Date - Month End].[Month End Date].[Month].&[20120331]}
having [Measures].Total>100000 on rows
from [Monthly Summary]

パラメータから月を取得しているため、前の月を取得する一般的な方法を探していますか? もしそうなら、あなたはこのようなことをすることができます:

select 
    ({ [Measures].[Total]})   on columns,
    non empty
    [Dim1].[h1].allmembers
    * [Dim1].[h2].allmembers
    * [Dim1].[h3].allmembers
    * [1 Date - Loss Date].[Date].[Year].allmembers
    * {[1 Date - Month End].[Month End Date].[Month].&[20120331].PrevMember,[1 Date - Month End].[Month End Date].[Month].&[20120331]}
    having [Measures].Total>100000 on rows
    from [Monthly Summary]

更新: 現在の月または前の月のいずれかが 100,000 より大きい場合に現在の値を取得するには、現在の月の合計に関係なく、次のようにします。

select 
    ({ [Measures].[Total]})   on columns,
    non empty
    [Dim1].[h1].allmembers
    * [Dim1].[h2].allmembers
    * [Dim1].[h3].allmembers
    * [1 Date - Loss Date].[Date].[Year].allmembers

    having [Measures].Total>100000 or ([1 Date - Month End].[Month End Date].[Month].&[20120331].PrevMember,  [Measures].Total>100000) on rows
    from [Monthly Summary] 
    where [1 Date - Month End].[Month End Date].[Month].&[20120331]

HAVING 句では、WHERE 句をメジャーと組み合わせて、指定された月 (2012 年 3 月) の基準を満たさない行を除外します。

于 2012-08-22T05:27:55.343 に答える
1

次のようなものを使用できます。

SELECT ({ [Measures].[Total]}) ON COLUMNS,
[Dim1].[h1].allmembers
* [Dim1].[h2].allmembers
* [Dim1].[h3].allmembers
* [1 Date - Loss Date].[Date].[Year].allmembers
HAVING [Measures].[Total] > 100000
OR ([Measures].[Total], [1 Date - Month End].[Month End Date].[Month].&[20120228]) >100000 
ON ROWS
FROM [Monthly Summary]
WHERE ([1 Date - Month End].[Month End Date].[Month].&[20120331])

行に空でないものは必要ありません。null < 100000

于 2012-08-22T07:57:10.903 に答える