2012-02-15 53 views
0

我有一份報告,它描繪了一大堆代表系統報警的統計數據。SSRS 2008組變量 - 對一組內的項目進行計數

我已經在用戶選定日期範圍內拉回所有的統計數據做了明細式報表,然後我添加了一個組對我的報警器的代碼ID,所以我將有東西組。

我希望做的是有這些團體通過代碼ID內的項目數的計數。我計劃將count作爲構成整個組頭的串聯字符串的一部分。它基本上說「報警代碼#{codeId} - {描述} - 總計:{總計}」。

我的問題是,這樣做計數我的查詢,然後我有預組的數據它擊中的報告之前。如果我這樣做,那麼我沒有我的詳細數據來擴大該組。運行一個摘要和一個細節數據集有點超過我的頭,但我可能需要考慮一個選項。

,所以我希望我可以用一組變量來計算包含在組內的物品的數量。任何人都可以告訴我一套粗略的步驟來試圖解決這個問題嗎?

回答

2

好像使用組變量這裏將使這比它需要更加複雜。

既然你已經在SSRS一組,你可以使用CountRows功能。將這個表達式轉換成一個佔位符,例如:

="Alarm Code #" & Fields!CodeID.Value 
& " - " & First(Fields!Description) 
& " - Total: " & CountRows() 

或者,根據大小,你可以添加一個相關子查詢到您的SQL查詢:

SELECT 
    CodeID, 
    MyField, 
    MyOtherField, 
    (SELECT COUNT(*) FROM myTable t1 WHERE t1.CodeID = t2.CodeID) AS MyRowCount 
FROM 
    myTable t2 

這不是特別有效的SQL,因此,如果你在數十萬行或更多行上運行它,我會採用第一種方法。

+0

啊人不能相信這是簡單的:)。如果countrows <1,我使用countrows來檢查我的表並隱藏它,而不是顯示數據標籤。不知何故,我在做這份報告時忘了所有關於它的事情。謝謝傑米F! – TWood 2012-02-15 23:01:16

+0

是的,SSRS中的集合函數非常聰明:他們會自動調整它們的範圍到當前分組,所以通常他們會做你想要的而不指定範圍。但是您可以隨時添加分組的名稱:「CountRows(」MyGroupName「)」以確保您獲得正確分組級別的計數。 – 2012-02-15 23:04:54