我已经断断续续地这样做了几天,但我无法弄清楚。 我有一行根据学生人数进行一些计算。如果学校没有被命名为“坏学校”(不是真实姓名),那么我将 SRB 值除以 4 乘以 2 的总和加上非 srb 值除以 6 乘以 2 的总和。我得到 srb以及来自我的 sql 中案例的非 srb 值。
我需要该行的总和,但我无法让任何东西发挥作用。我认为它只是 (sum[Table]) 但这会引发错误。是否有捷径可寻?
我只需要总行数
我想不出如何将不好的学校加上 0.5 得出总和
我看过类似问题的其他一些答案,但我的似乎有额外的层使问题变得复杂
我根据上面评论的假设添加这个答案,所以如果这没有帮助,请提供我在评论中要求的所有详细信息。
我首先使用以下内容作为我的数据集查询创建一个简单的数据集。
declare @t table (school varchar(20), srb decimal (10,2), nonsrb decimal(10,2))
INSERT INTO @t values
('A', 1, 2), ('A', 2, 2), ('A', 3, 1),
('B', 11, 12), ('B', 12, 12), ('B', 13, 11),
('C', 21, 22), ('C', 22, 22), ('C', 23, 21)
SELECT * FROM @t
然后,我使用一个简单的表格创建了一个新报告,添加了 3 列,然后添加了一个名为
grpSchool
的行组,该行组按“学校”分组。
我在组行中添加了一个表达式,该表达式与您的基本相同。表情是这样的。
=iif(
Fields!school.Value = "B", 0.5
, (
(SUM(Fields!srb.Value)/4*.2)
+(SUM(Fields!nonsrb.Value)/6*.2)
)
)
然后我添加了一个总行,并对 srb 和 nonsrb 列进行了求和,这些不是此答案所必需的,因此可以忽略。
然后我将以下表达式添加到总行中。
=SUM(
iif(
MAX(Fields!school.Value = "B", "grpSchool")
, 0.5
, (
(Sum(Fields!srb.Value, "grpSchool") / 4 * 0.2)
+ (Sum(Fields!nonsrb.Value, "grpSchool") / 6 * 0.2)
)
)
)
基本上,这会评估整个数据集的原始表达式并对结果求和。然而,由于我们需要根据每所学校进行评估,我在总和中添加了上下文,因此
Sum(Fields!srb.Value, "grpSchool")
表示所提供上下文中 srb 的总和,在这种情况下,上下文是 "grpSchool"
,这是我们学校的名称行组。MAX()
,因为这对于每个行组中的每一行都是相同的。我们可以使用 MIN() ,因为它总是返回相同的值(A、B 或 C,具体取决于组)。
现在我们只需将返回值的结果相加即可。
供参考,报告设计如下......
最终输出如下所示..