对于每个部门,我希望排名前25位的客户按金额递减。像:
Dept|Customer|Amt
1 cust_1 5000
cust_2 2000
.
.
.
2 cust_26 6000
cust_27 3000
.
.
3
.
.
7
到目前为止我尝试的是:
SELECT
NON EMPTY { [Measures].[Amount] } ON COLUMNS ,
NON EMPTY {
[Customer].[DEPT].[DEPT]*
ORDER(
TOPCOUNT([Customer].[Customer].[Customer],25,[Measures].[Amount]),
[Measures].[Amount], DESC)
}
FROM [cube]
虽然我有适当的数据,但我得到的结果却不是每个部门都有25个。
答案 0 :(得分:1)
行(ORDER(TOPCOUNT(...))
)的交叉连接的第二个术语不知道第一个([Customer].[DEPT].[DEPT]
)。您应该使用Generate
,因为它遍历部门,因此允许您将当前部门放入TOPCOUNT
的第一个参数:
SELECT
NON EMPTY { [Measures].[Amount] } ON COLUMNS ,
NON EMPTY
Generate([Customer].[DEPT].[DEPT],
TOPCOUNT({[Customer].[DEPT].CURRENTMEMBER}
*
[Customer].[Customer].[Customer],
25,
[Measures].[Amount]
)
)
FROM [cube]
另请注意,您无需订购TOPCOUNT
降序it is already ordered this way的结果。