2016-09-15 31 views
0

考慮以下是在SSRS報告顯示在表矩陣數據集:如何查找SSRS tablix數據集中最常出現的值?

GroupID | ProductID 
--------------------- 
Group 1 | Product1 
Group 2 | Product10 
Group 1 | Product2 
Group 3 | Product27 
Group 2 | Product12 
Group 2 | Product14 

我通過插入行/外線組加入新行 - 下面。

在此行我顯示的行總數 - 通過CountRows(),不同的羣體的數量來實現的 - 通過= CountDistinct實現(!字段GroupID.Value)

我也想顯示該組的名稱行數最多的情況下,在這種情況下,它將是「組2」(如果有多個具有相同行數的組,我只需要顯示其中的一個)。

這是如何實現的?我想我應該使用一些聚合或查找功能,但目前爲止無法弄清楚。

PS此報表正在從Crystal Reports移植到SSRS。在Crystal Reports中,通過N = 1的「N次最頻繁」總結很容易實現,但據我所知,SSRS中沒有這樣的事情。

回答

1

添加一個tablix並將GroupId設置爲Row Group。

enter image description here

的行數使用:

=Count(Fields!GroupID.Value) 

右鍵單擊行組窗格GroupID組,去組屬性,在過濾器選項卡使用以下設置:

enter image description here

對於Expression使用:

=Count(Fields!GroupID.Value) 

它將過濾行數最多的前1個組。其結果是這樣的:

enter image description here

更新:如果有多於一組具有相同數量的occurencies的以前的解決方案是行不通的。

添加一個tablix,刪除詳細信息(默認組)並在第一列中添加GroupID字段。

enter image description here

對於行數列使用下面的表達式來替換DataSetName通過數據集的實際名稱:

=LookupSet(
    Fields!GroupID.Value, 
    Fields!GroupID.Value, 
    Fields!GroupID.Value, 
    "DataSetName" 
).Length 

右鍵單擊您的表矩陣和去Tablix屬性,在Sorting選項卡中選擇Z to A命令並使用Sort By文本框中的上一個表達式。

enter image description here

它應該顯示即使與相同數目的occurencies中的第二組是存在的唯一一組。

讓我知道這是否有幫助。

+0

是的,這有助於您,甚至不需要新Tablix中的「行數」列。然而,如果你有另外一個包含3個項目的組(比如說「組1」在這個數據集中也有3個項目),新的tablix將有2行 - 「組1」和「組2」,我只想看到一個。我試圖使用RowNumber()函數,但它不允許在過濾器中使用。 –

+0

@JoeSchmoe,檢查我的更新。 –

+0

我決定使用你的第一個建議,並顯示多個組,因爲這似乎是更合適的解決方案。 –

相關問題