2011-10-24 85 views
4

這有點難以用文字解釋......我試圖計算矩陣中分組不同值的總和。比方說,我有一個SQL查詢返回的以下數據:分組的不同值的總和

------------------------------------------------ 
| Group | ParentID | ChildID | ParentProdCount | 
|  A |  1 |  1 |    2 | 
|  A |  1 |  2 |    2 | 
|  A |  1 |  3 |    2 | 
|  A |  1 |  4 |    2 | 
|  A |  2 |  5 |    3 | 
|  A |  2 |  6 |    3 | 
|  A |  2 |  7 |    3 | 
|  A |  2 |  8 |    3 | 
|  B |  3 |  9 |    1 | 
|  B |  3 |  10 |    1 | 
|  B |  3 |  11 |    1 | 
------------------------------------------------ 

有查詢其他一些數據,但它是不相關的。 ParentProdCount是特定於ParentID的。

現在,我有一個MS報表設計器中的矩陣,我試圖計算ParentProdCount的總和(按「組」分組)。如果我只是添加表達式

=Sum(Fields!ParentProdCount.Value) 

我得到結果20組A和組3,這是不正確的。 A組和B組的正確值應爲5,如果沒有涉及到ChildID,則不會發生這種情況,但我必須在同一個矩陣中使用一些其他特定於兒童的數據。

我試圖嵌套FIRST()和SUM()聚合函數,但顯然它不可能有嵌套的聚合函數,即使他們有定義的範圍。

我很確定有一些方法可以計算分組獨立總和,而無需創建另一個SQL查詢。任何人都知道如何做到這一點?

回答

8

好,我得到這個整理出來加入了ROW_NUMBER()函數,我的SQL查詢:

SELECT Group, ParentID, ROW_NUMBER() OVER (PARTITION BY ParentID ORDER BY ChildID ASC) AS Position, ChildID, ParentProdCount FROM Table 

,然後我用

=SUM(IIF(Position = 1, ParentProdCount.Value, 0)) 
+1

對於任何有此問題的人,我試着總結一個十進制值並得到這個錯誤:「First,Last,Previous,Count和CountDistinct以外的聚合函數只能聚合單個數據類型的數據。我通過在Sum函數中將Nothing替換爲Nothing來解決問題。 – Rono

0

將分組在PARENTID取代SSRS SUM函數並使用求和該組,

例如:

if group over ParentID = "ParentIDGroup" 
then 
    column sum of ParentPrdCount = SUM(Fields!ParentProdCount.Value,"ParentIDGroup")