多くの詳細が欠落しているため、欠落している情報を想定しています:
- 複数選択は必要ありません。
- クライアント階層の名前は
[Client].[Client]
です。
- ステータス階層には という名前が付けられます
[Status].[Status]
。つまり、ディメンションとは異なるディメンションにありClient
ます。
- 日付階層は
[Date].[Date]
、日レベル[Date].[Date].[Day]
と月レベルで名前が付けられます[Date].[Date].[Day]
。
- 2012 年 6 月のメンバー キーは
201206
.
- 上記のディメンションを接続するメジャー グループは と呼ばれ
Sales
ます。
- キューブの名前は
Cube
です。
それで
WITH Set [Days] as
Descendants([Date].[Date].CurrentMember, [Date].[Date].[Day])
Member [Measures].[Date] as
Exists([Days], {[Client].[Client].CurrentMember}, 'Sales')
.Item(Exists([Days], {[Client].[Client].CurrentMember}, 'Sales').Count - 1)
.Item(0)
.Name
SELECT { [Measures].[Date] }
ON COLUMNS,
NON EMPTY
[Client].[Client].[Client].Members
*
[Status].[Status].[Status].Members
ON ROWS
FROM [Cube]
WHERE [Date].[Date].[Month].&[201206]
あなたが望むものを提供する必要があります。
[Days]
セットには、フィルタリングされた日付範囲内のすべての日が含まれます。次に、Date
メジャーは次のように計算されます:現在のクライアントのものにExists
制限し、最初にこのセットから最後のタプルを抽出し、2 番目にこれをメンバーに変換してから、このメンバーの名前をメジャーとして返します。Days
Item
Item
Date
編集
ステータスごとに 1 つの行を取得するのではなく、最後のステータスを取得するには (1 日に最大 1 つのレコードがあると仮定)、ステータスをメジャーに変換することもできます。
WITH Set [Days] as
Descendants([Date].[Date].CurrentMember, [Date].[Date].[Day])
Member [Measures].[Date] as
Exists([Days], {[Client].[Client].CurrentMember}, 'Sales')
.Item(Exists([Days], {[Client].[Client].CurrentMember}, 'Sales').Count - 1)
.Item(0)
.Name
Member [Measures].[Status] as
Exists([Status].[Status].[Status].Members,
{ Exists([Days], {[Client].[Client].CurrentMember}, 'Sales')
.Item(Exists([Days], {[Client].[Client].CurrentMember}, 'Sales').Count - 1)
},
'Sales'
)
.Item(0)
.Item(0)
.Name
SELECT { [Measures].[Status], [Measures].[Date] }
ON COLUMNS,
NON EMPTY
[Client].[Client].[Client].Members
ON ROWS
FROM [Cube]
WHERE [Date].[Date].[Month].&[201206]
メジャーの外側Exists
はStatus
、日付のステータスを含む 1 つの要素セットを見つけます。これは、メンバーへの 2 つの呼び出しを介して変換されItem(0)
、そこから名前を取得できます。