我有一張包含年份,月份,產品,嘗試次數和成功嘗試次數的表格。SSRS嵌套組中的總和
數據按年份,月份和產品分組。
我需要按產品添加%成功(成功/嘗試),然後按月分組,然後按年分組。
在一個字段中有年和月之前。所以我能夠使用Sum(success.value,「period」)/ Sum(attempts.value,「period」)來做到這一點。
但是,如果存在嵌套組,這是如何完成的?
我確實看到了一些關於添加參數「遞歸」的內容,但還沒有得到它的工作。
我有一張包含年份,月份,產品,嘗試次數和成功嘗試次數的表格。SSRS嵌套組中的總和
數據按年份,月份和產品分組。
我需要按產品添加%成功(成功/嘗試),然後按月分組,然後按年分組。
在一個字段中有年和月之前。所以我能夠使用Sum(success.value,「period」)/ Sum(attempts.value,「period」)來做到這一點。
但是,如果存在嵌套組,這是如何完成的?
我確實看到了一些關於添加參數「遞歸」的內容,但還沒有得到它的工作。
聚合發生在當前級別的範圍內。通常,=SUM(Fields!Amount.Value)
是所有必需的,Reporting Services自動處理聚合。
如果你有以下分組,這裏是聚集是如何工作的含蓄,如果你只是用=SUM(Fields!Amount.Value)
:
Year Month Product Aggregation
2013 Sums all products for all months for 2013
January Sums all products for January 2013
Widget Sums all Widgets for January 2013
Gadget Sums all Gadgets for January 2013
February Sums all products for February 2013
Widget Sums all Widgets for February 2013
Gadget Sums all Gadgets for February 2013
2014 Sums all products for all months for 2014
January Sums all products for January 2014
Widget Sums all Widgets for January 2014
Gadget Sums all Gadgets for January 2014
February Sums all products for February 2014
Widget Sums all Widgets for February 2014
Gadget Sums all Gadgets for February 2014
在你的情況下隱含的聚集應該可以正常工作,無論嵌套的量 - 報表服務將工作這一切都爲你。所以這個表達式應該在分組的各個層面的工作:
=Sum(Fields!Success.Value)/Sum(Fields!Attempts.Value)
的SUM
會隱分組的現有水平的範圍內進行。如果沒有發生這種情況,可能是您的分組操作不正確。查看組屬性並查看實際分組的級別;外部組應該是Year,下一個組Month和最後的最內層組Product。
這不會將所有Januarys分組在一起,它表示當該字段發生更改時,它應該爲上一個組打印一個組頁腳併爲下一個組打印一個組頁眉。 2013年1月份更改爲2月份時,會觸發集團變更,同樣,1月份變更爲2014年2月份。不同的Januarys在年度的更高級別分組範圍內。
您需要確保您的數據按照分組所需的順序,或者通過在您的SQL語句中使用ORDER BY [Year], [Month], [Product]
或通過在您的Tablix上實施排序。否則,字段將不會按正確順序排列,並且隨着字段處於隨機順序,組更改將不斷被觸發。
如果您在當前範圍之外進行聚合,則只需明確定義範圍。例如,如果我想添加每行佔數據集總數的百分比,那麼我需要明確使用該數據集作爲我的聚合範圍,因此我將在我的詳細信息行中使用此計算:
=SUM(Fields!Amount.Value)/SUM(Fields!Amount.Value, "MyDataset")
請注意,recursive parameter僅用於具有分層數據的表格 - 即父/子關係(例如員工的組織結構圖)。
謝謝你的回答克里斯。我會測試一下並讓你知道。 – user2708232
'Period'是你數據集的名字嗎?你可以添加幾行樣本數據和你想要的結果嗎?如果使用Sum(success.value)/ Sum(attempts.value)或Sum(success.value,「GroupName」)/ Sum(attempts.value,「GroupName」)'會發生什麼。第一個只是運行在任何範圍內,例如不同的組,並且第二個明確地在組Scope中運行。 –
如果使用Sum(success.value)/ Sum(attempts.value),它將爲組摘要顯示相同的值,就像最後一個詳細信息行一樣。如果月份是一年的小組,我會將「GroupName」替換爲「Months」嗎?如果是這樣,2013年1月至2014年1月之間不會感到困惑嗎?或者你需要以某種方式在「年份」內說「月」? – user2708232