의 총 판매에 의하여 사람,하지만 내 큐브에서 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
은 이제 나는이 치수 큐브 있다고 가정 해 봅시다
날짜 (년, 월, 일) - 날짜가 항상 달의 1 일입니다 영업 사원
사실 테이블 세 개의 열이 - 날짜, 영업 담당자, TotalSales - 즉, 사람이 그 달의 판매 금액을.
저는 매월 상위 5 명의 판매 직원과 각 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]
)
:이처럼 보이는 쿼리를 사용하여, 한 달 동안 결과를 얻을 수 있어요
.
저는 매월, 매달, 상위 5 명의 판매원과 판매량을보고 싶습니다.
이렇게하면 매년 판매 직원을 필터링하거나 그룹화하지 않는 것입니다 (각 날짜별로 상위 5 개를 얻음). 반환 된 값은 모든 곳에서 매우 낮고 null 값을 포함합니다. 특히 SalesSerson 목록은 TotalSales가 많이 달라 지더라도 각 날짜마다 동일합니다. .
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에 익숙하지 않은 사람들에게도 도움이 될 수 있기를 바랍니다.