2012-10-24 57 views
2

所以我的數據是這樣的:如何使用MDX執行不同的總和?

Date  EMPLOYEE_ID HEADCOUNT TERMINATIONS 
1/31/2011  1   1    0 
2/28/2011  1   1    0 
3/31/2011  1   1    0 
4/30/2011  1   1    0 
... 
1/31/2012  1   1    0 
2/28/2012  1   1    0 
3/31/2012  1   1    0 

1/31/2012  2   1    0 
2/28/2011  2   1    0 
3/31/2011  2   1    0 
4/30/2011  2   0    1  

1/31/2012  3   1    0 
2/28/2011  3   1    0 
3/31/2011  3   1    0 
4/30/2011  3   1    0 
... 
1/31/2012  3   1    0 
2/28/2012  3   1    0 
3/31/2012  3   1    0 

而且我想總結一下人數,但我需要在EMPLOYEE_ID從和刪除重複項。從數據中可以看到employee_id 1在表中多次出現,但我只想添加一次其人數列。例如,如果我捲起上一年,我可能會使用該查詢的報表:

with member [Measures].[Distinct HeadCount] as 
      ??? how do I define this??? 
select { [Date].[YEAR].children } on ROWS, 
     { [Measures].[Distinct HeadCount] } on COLUMNS 
     from [someCube] 

將產品輸出:

YEAR Distinct HeadCount 
2011   3 
2012   2 

任何想法如何與MDX做到這一點?有沒有辦法控制每位員工使用哪一行?

回答

1

您可以使用像這樣的表達:如果你想要一個更通用的表達,你可以使用這個

WITH MEMBER [Measures].[Distinct HeadCount] AS 
    Sum(NonEmpty('the set of the employee ids', 'all the dates of the current year (ie [Date].[YEAR].CurrentMember)'), [Measures].[HeadCount]) 

WITH MEMBER [Measures].[Distinct HeadCount] AS 
    Sum(NonEmpty('the set of the employee ids', 
       Descendants(Axis(0).Item(0).Item(0).Hierarchy.CurrentMember, Axis(0).Item(0).Item(0).Hierarchy.CurrentMember.Level, LEAVES)), 
     IIf(IsLeaf(Axis(0).Item(0).Item(0).Hierarchy.CurrentMember), 
      [Measures].[HeadCount], 
      NULL)) 
+1

這會不會是EMPLOYEE_ID的簡單獨特的計數聚集柱?我想爲每個唯一員工ID在總人數字段中總結值,而忽略重複條目。我不關注這將如何做到這一點。還要記住,年度上漲只是一個例子。我希望計算出的度量不會考慮我正在處理的維度,因此可以在創建的任何查詢中使用它。 – chubbsondubs

+0

你能解釋一下嗎?如果這確實是一個解決方案,我有獎勵,我想獎勵。但是,第一個建議似乎沒有什麼不同,一個明顯的數字。你能解釋爲什麼這些工作? – chubbsondubs