2010-12-14 83 views
0

我有包含地理銷售數據的立方體。我想根據來自任意知名商店的前5名銷售商(所有這些都是實際問題的簡化版本),從所有商店中提取產品的銷售。在MDX中,如何過濾基於TopCount的尺寸/軸

在SQL(可恥的是我),這將是

select StoreId, ProductId, Sales from cube where ProductId in 
    (select top 5 ProductId from cube where Store = @Store order by Sales desc) 

回答

1

可以使用TopCount函數這一點。只要你有一個名爲產品尺寸和商店和一個名爲措施[銷售]:

Select [Measures].[Sales] On Columns, 
     CrossJoin([Store].Members,Generate(Topcount(Crossjoin({[Store][email protected][<StoreId>]},[Product].Members),5,[Measures].[Sales]),[Product].CurrentMember)) On Rows 
    From [Yourcube] 

更換<STOREID>有你感興趣的特定店鋪通過發現特定店鋪前5生成將循環和只返回產品成員。然後將這個結果與所有商店進行交叉連接。

+0

我得到的遠遠與TopCount上不幸的是,我需要在所有的基礎上,前5名的門店在短短的一個,如果對不起我的問題是有點不清楚銷售。我需要將產品尺寸限制爲所有商店的單個商店的前5個產品和報表。 – MrTelly 2010-12-14 10:19:54

+0

我明白了!我編輯了查詢以在行中包含Store。 – Rudolf 2010-12-14 14:45:07

+0

我已經嘗試了修正後的MDX,並且它將每個商店的前五名返回給我,而不是基於單個商店的前五名的每個商店的銷售額。我正在尋找5行(6,如果你包括所有)返回 – MrTelly 2010-12-16 00:14:29

0

這將爲ROWS軸中的商店提取前5個產品,然後根據[Store]維度的defaultMember選擇這些產品的[Sales]。如果[Store] defaultMember是可聚合層次結構的根目錄,則應該爲每個商品銷售所有商店。

選擇

[措施]。[銷售]開0,

TopCount中([存儲]。[您的商店] * [產品] .Members),5,[措施]。[銷售])ON 1

FROM [您的立方體]