2012-02-15 56 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