2009-04-24 34 views
1

我已創建的MDX查詢,其計算TOP 10郵編(根據我的患者保持量度)爲這樣:MDX - TopCount上加上「其他」或「其餘部分」

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10) 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

該查詢被用來填充PerformancePoint 100%堆積條形圖。客戶要求,因爲這是一個基於!00%的圖表,我們將其餘的郵政編碼轉換爲「其他」字段,這樣應該有11個值:前10箇中的每一個和第11箇中的一個是其餘郵政編碼的總和。

我是一個MDX的極端新手,但這並不意味着它應該是不可能的。有沒有人有任何想法或建議?

回答

2

我會盡我所能與未經測試的代碼,所以這裏有雲:

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SET [Top10ZipCodes] AS 
    (TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10)) 

MEMBER [Patient].[ByZipCode].[OtherZipCodes] AS 
    (AGGREGATE({EXCEPT([Patient].[ByZipCode].Members, [Patient].[ByZipCode].[Top10ZipCodes])})) 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

{[Top10ZipCodes], [Patient].[ByZipCode].[OtherZipCodes]} 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

這樣做是創建一組你的排名前10位的郵政編碼,然後彙總(比和不同!)所有的郵政編碼,除了前10名。

此外,如果這是一個常見的集合(排名前10的郵政編碼),您可能想在立方體上設置一個集合,在那裏您可以重複使用它nauseum ,而不必更改每個您擁有的MDX查詢。

乾杯,
埃裏克

+0

有與創建的SET [病人]語法錯誤。[ByZipCode]。[Top10ZipCodes]。我只需刪除維度引用(將SET重命名爲[Top10ZipCodes]),這對我來說是100%的工作。非常感謝,我甚至覺得我學到了一些東西,這比問題的答案還要好。 – Colin 2009-04-28 14:49:23

相關問題