先月支払ったが今月(今月)は支払っていないクライアントを選択するMDXステートメントまたはクエリを作成するにはどうすればよいですか?Microsoft SQL Server Analysis ServicesR2で設計および展開されたデータキューブがあります。顧客ディメンションとファクトテーブルがあります。助けてください。
2 に答える
[Time] ディメンションと、クライアントが支払った場合の値を含むメジャーがあるとします。Filter()
この機能は、すべてのクライアントのセットを、関心のあるクライアントだけに減らすのに役立つと思います。
SELECT {Filter({[Client].[SomeLevel].members}, ([Time].[LastMonth], [Measures].[whatever]) > 0 AND ([Time].[ThisMonth], [Measures].[whatever]) = 0} ON ROWS, {[Measures].[whatever]} ON COLUMNS FROM [CubeName]
[Time].[ThisMonth] を書いた場所の代わりに何を使用するかを決めるのに苦労するかもしれません-「現在の」日付を選択するための StackOverflow の他の回答を参照してください。
まず、今月と先月を特定する必要があります。VBA!Date
それを行う 1 つの方法は、関数を使用して計算することです。
したがって、日付がフォーマットで保存され、メジャーと階層を持つ日付ディメンションが12/31/2014
あると仮定すると、以下のコードが役に立ちます。Payment
Year-Quarter-Month-Date
WITH MEMBER [Measures].ValueThisMonth AS
(
[Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT,
[Measures].[Payment]
)
MEMBER [Measures].ValueLastMonth AS
(
[Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT.LAG(1),
[Measures].[Payment]
)
SELECT [Client].[Client Name].MEMBERS
HAVING ISEMPTY([Measures].ValueThisMonth)
AND NOT(ISEMPTY([Measures].ValueLastMonth))
ON 0
FROM [Your cube]
WHERE
StrToMember("[Date].[Year-Quarter-Month-Date].[Date].&[" + FORMAT(VBA![Date](), "MM/dd/yyyy") + "]" + "]")
代わりに、フロントエンドからこの「現在の」値を渡したい場合は、WHERE
句でパラメーターを使用します。