我正在尝试做一个合理简单的报告,但我是新手并努力奋斗。
我有两个表,属性和事件。
在属性表中,我有一个ID,属性的名称(名称)和房间数(NoOfRooms)。
在事件表中,我有ID,与之相关的属性(PropertyID),DateOpened,DateClosed和Status。
在报告中,我设法让它向我展示每个物业的事故数量,然后显示每个床位的事件数量。
然而,在摘要中,我希望它做的是总计那个月的所有事件,我已经完成了。但是然后把这个数字除以床的总数。
问题出现的地方是它多次加起床的数量。
因此,如果数据如下所示:
Property Name IncidentID No of Beds
Property1 1 100
Property1 2 100
Property2 3 200
Property2 4 200
Property2 5 200
我明白了:
Propery Name No Of Incidents Incidents / Bed
Property1 2 0.02
Property2 3 01015
但我不能让它显示应该是的摘要:
No of Incidents Incidents / Bed
5 5/300 = 0.016666667
我有没有发生的事情,这只是最后的事件/床,它认识到只有300张床,而不是800张床。
答案 0 :(得分:0)
我认为您可能很难在报告级别这样做。
我会通过扩展基础数据集来解决这个问题:
Property Name IncidentID No of Beds Total Beds
Property1 1 100 300
Property1 2 100 300
Property2 3 200 300
Property2 4 200 300
Property2 5 200 300
如果你只是从数据库中提取它,那么SQL应该不会太困难,后续的报告级代码也应该相当简单。
最终,SSSRS与这些类型的聚合进行斗争,在这些聚合中,您在群组级别聚合(采用不同的 No Of Beds 值),然后在更高级别应用另一个聚合(不同的总和) No Of Beds 值。)
SSRS 2008 R2确实提供了聚合选项的聚合,因此如果您使用的是2008 R2,则可以使用以下表达式来执行此操作:
=CountRows() / Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))
其中 PropertyName 是该组的名称。
但是对于2008年,您最好只将 Total Beds 添加到数据集级别。
此外,用户@Tom Jenkin提出了一个很好的观点;如果您只对属性级详细信息感兴趣,可以将数据集更改为已经汇总,例如如果它是由SQL语句生成的,则使用GROUP BY
仅为上述数据返回两行;这也是合适的。
评论后修改:
我根据您的示例数据集创建了一份报告:
您可以看到已创建一个名为 PropertyName 的行组。
Total Beds 的表达式为=Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))
。
最终百分比的表达式为
=CountRows() / Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))
如上所述。
这是给出了所需的结果: