我試圖做到這一點總銷售額,但在我的立方體MDX:MDX - 前X銷售人員通過爲每個日期
select
*
from
(
select
Date, SalesPerson, TotalSales, row_number() over(partition by Date order by TotalSales desc) as Num
from SalesFact as ms
) as x
where
Num < 5
order by
Date, SalesPerson, Num desc
比方說,我有這些尺寸的立方體:
日期(年,月,日) - 日期始終爲第一個月 SalesPerson
事實表有三列 - 日期,SalesPerson,TotalSales - 即該人在當月銷售的金額。
我想,每個月,看到前5名銷售人員,以及他們的每一個TotalSales的。排名前五的銷售人員可能每個月都會有所不同。
我能夠得到的結果一個月,使用查詢,看起來像這樣:
select
[Measures].[TotalSales] on columns,
(
subset
(
order
(
[SalesPerson].children,
[Measures].[TotalSales],
bdesc
),
0,
5
)
) on rows
from
Hypercube
where
(
[Date].[Date].&[2009-03-01T00:00:00]
)
我後是把日期和行營業員,並TotalSales在列的查詢。
我想每個月看到隨着時間的推移,以及每個月的前5名銷售人員,以及有多少他們賣。
當我嘗試做這種方式,它似乎並沒有過濾/組銷售人員每個日期(獲取每個日期前5名)。返回的值遍佈整個地方,幷包含非常低的值和空值。值得注意的是,儘管TotalSales差別很大,但SalesPerson列表對於每個日期都是相同的。 。
select
[Measures].[TotalSales] on columns,
(
[Date].[Hierarchy].[Date].members,
subset
(
order
(
[SalesPerson].children,
[Measures].[TotalSales],
bdesc
),
0,
5
)
) on rows
from
Hypercube
似乎內部 「子集」 一切都需要由電流[日期]被過濾[層次] [日期],但使用CurrentMember給出CROSSJOIN /軸誤差:
select
[Measures].[TotalSales] on columns,
(
[Date].[Hierarchy].[Date].members,
subset
(
order
(
([SalesPerson].children, [Date].[Hierarchy].CurrentMember),
[Measures].[TotalSales],
bdesc
),
0,
5
)
) on rows
from
Hypercube
我已經試過,沒有運氣的最後一個查詢的幾種變化。
希望的答案將是幫助他人新MDX也是如此。