s-s-rS:从“计数”计算字段中计算百分比

Posted

技术标签:

【中文标题】s-s-rS:从“计数”计算字段中计算百分比【英文标题】:s-s-rS: Calculate % from 'counted' calculated fields 【发布时间】:2017-05-17 12:37:03 【问题描述】:

对 s-s-rS 非常陌生,因此不熟悉语法 - 使用 Report Builder 2.0。

我在报表生成器中构建了一个非常简单的表格,用于显示可供患者使用的预约空档总数,以及已预订的这些空档总数。

我想添加一个额外的列来显示预订插槽的百分比(即可用插槽/已预订插槽 *100%):

| Total Slots | Booked Slots | % Booked |
+-------------+--------------+----------+
|    2000     |     1250     |   62.5%  |
+-------------+--------------+----------+

'Total Slots' 和 'Booked Slots' 值均基于数据集中的相同字段 ('Booked_Flag')。该字段带有一个“Y/N”值。

“总时隙”列具有基本表达式:=Count(Fields!Booked_Flag.Value)

“预定时段”列具有基本表达式:=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0))

请任何人描述计算“预订百分比”数字的最合适方法吗?

我试过这个:=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value),但它会引发以下错误 - 我假设这意味着我无法在另一个计算之上执行计算:

The expression used for the calculated field '=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value)' includes an aggregate function. Aggregate functions cannot be used in calculated field expressions.

非常感谢任何指导。

【问题讨论】:

不使用字段,而是使用实际的文本框值。 ReportItems!Textbox1.value 能否修改数据以返回 0 或 1 值而不是 'Y'/'N'?这样你就可以简单地求和。 谢谢@Snowlockk - 我已经尝试过了,但它在报告中给我一个#Error - 有什么建议吗? 感谢@RossBush - 我想我可以尝试在 StoredProcedure 中转换值,但我很想看看是否可以处理报表层中的所有计算。 可能是除以零错误。使用以下代码 Public Shared Function SafeDivision(numerator as Decimal, denominator as Decimal) as Decimal If denominator = 0.0 Return 0.0 End If Return numerator / denominator End Function 【参考方案1】:

您可以直接访问报告单元格的内容并使用它们进行计算。你的情况很简单。 让我们假设在报告设计中,包含“2000”的单元格称为 TextBox1(检查属性以获取名称),包含“1250”的单元格称为 TextBox2,那么您的 % 列表达式将类似于

=ReportItems!TextBox2.Value / ReportItems!TextBox1.Value

只需将计算列的格式设置为p1(带1位小数的百分比)即可。

【讨论】:

@Alan_Schofield - 非常感谢,不过,当我运行报告时,表格单元格中会显示 #Error 您确定文本框名称正确吗?我刚刚对此进行了测试,以防我做了一些愚蠢的事情,但它工作正常。如果您仍有问题,请发布报告设计的图片和您使用的确切表达方式。 @Alan_Schofield 破解了它,谢谢。我错误地在表达式中使用了列标题单元格的名称,而不是包含实际值的单元格的名称 - 将它们更改为宾果游戏。非常感谢您的帮助。

以上是关于s-s-rS:从“计数”计算字段中计算百分比的主要内容,如果未能解决你的问题,请参考以下文章

矩阵逐年百分比计算

s-s-rS/RDLC 计算表达式的小计

带有表达式的 s-s-rS 小计列

s-s-rS 聚合聚合

计算百分比和计数

在 Grafana 中与 groupBy 一起计算百分比