2012-07-09 38 views
6

我知道我們不能在矩陣中使用集合函數作爲過濾器。集合函數「Aggregate」不能用在包含任何過濾器的報表中

這是在AdventureWorks中的情況。我有三個層次:

  1. 類別
  2. 子目錄
  3. 產品

1 Calc_Member:

=With MEMBER Calc_Member as [Measures].[Internet Average Sales Amount] 

而實際上:

[Measures].[Internet Average Sales Amount]= 
[Measures].[Internet Sales Amount]/[Measures].[Internet Order Count] 

我想爲層次結構中的每個級別使用不同的聚合。對於子類別和產品爲Calc_Member的folmula是正如我以前提到:

[Measures].[Internet Average Sales Amount] 

但對於類別級別我想相關的子類別的平均:

WITH MEMBER Calc_Member AS 
    Average(existing [Product].[Subcategory].[Subcategory].members 
    , [Measures].[Internet Average Sales Amount]) 

在分析服務能正常工作,但我有基於此數據集在Reporting Services的報告:

  • 類別
  • subcaegory
  • 產物
  • Calc_member

在我使用具有三個行組的矩陣,並添加總爲每個組SSRS。對於類別級別1想要在ssrs中使用聚合函數(以使用在分析服務中定義的Formlula)並且再次正常工作。

但是,如果我想用一些成員(如類別,子類別,產品)上的過濾器 它拋出這個錯誤:

The aggregate function "Aggregate" cannot be used in a report that contains any filters

而這個錯誤是accepteable過,但我不undrestand是:如果我在Matrix1中使用聚合函數,並且在Matrix2中使用過濾器,它也會拋出錯誤。

爲什麼?

+1

這是很難理解你的問題原樣。也許你可以編輯它並添加更多的代碼示例,告訴我們你試過了什麼,爲什麼它不起作用等等。按照現狀,我們無法真正幫助你。 – Jeroen 2012-07-10 22:04:29

+0

感謝您的編輯。我試圖更新一些,希望沒有改變意思。不過,這個問題有點難以理解 - 可能是語言障礙?也許別人可以看到發生了什麼,併爲你回答... – Jeroen 2012-07-11 21:55:52

+0

嗨Jeroen非常感謝你的關注。忘記我以前的問題。請查看這個如果possible.put一個矩陣在ssrs中使用聚合函數。然後把另一個矩陣和使用過濾器,然後你可以看到錯誤謝謝。 – abianari 2012-07-12 04:02:03

回答

0

您可以將聚集連接到數據集,然後將其用作過濾器嗎? (顯然我需要50的聲譽評論)

例如:

SELECT item, quantity, aggregateQuantity 
FROM TABLE T1 
LEFT JOIN (SELECT item, SUM(Quantity) AS aggregateQuantity FROM TABLE) T2 
ON T1.item = T2.item 
相關問題