2011-12-14 1 views
1

先月に支払ったがこの(現月)の月を支払っていないクライアントを選択するMDXステートメントまたはクエリを作成するにはどうすればよいですか。 Microsoft SQL Server Analysis Services R 2にデータキューブを設計して展開しました。顧客次元とファクトテーブルがあります。 助けてください。先月に支払ったがこの(現月)の月を支払っていないクライアントを選択するMDXステートメントまたはクエリを作成するにはどうすればよいですか。

答えて

0

[時間]ディメンションと、クライアントが支払った場合の値を含むメジャーがあるとします。私は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]

あなたはトラブルは、私が書いた場所の代わりに使用するかを決定するかもしれません[時間]。[ThisMonth] - 現在の日付を選択するためのStackOverflowの他の回答を参照してください。

0

まず、現在の月と最後の月を特定する必要があります。これを行う1つの方法は、VBA!Date関数を使用して計算する方法です。

日付が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句にパラメータを使用したい場合

関連する問題