如何仅对 RDLC 中连接数据中的一个重复值求和

How to sum only one of repeated values from joined data in RDLC

我不确定 SSRS 是否愚蠢,或者我是(我倾向于两者)。

我有一个数据集(由于连接等)有一些列具有相同的值,每行都重复(相当标准的数据库内容):

rid    cnt    bid   flg1   flg2
-------------------------------
4      2882   1     17     3
5      2784   1     17     3
6      1293   1     17     3
18     9288   2     4      9
20     762    2     4      9

基于 cnt 的报告非常简单。我还可以制作一个显示以下内容的 tablix:

bid    flg1   flg2
------------------
1      17     3
2      4      9

(其中 tablix 按 Fields!bid.Value 分组,列分别为 Fields!flg1.ValueFields!flg2.Value。)

我想不通的是如何显示这些值的总和——具体来说,我想表明 flg1 的总和是 21,flg2 的总和是 12——不是 数据集中每一行的总和(对每个值计数不止一次)。

(请注意,我不是在寻找不同值的总和,因为它们可能不是唯一的。我想要每个 bid 组中一个值的总和,因为它来自 table join 所以它们将始终具有相同的值。)

如果可能的话,我也希望能够在报表的顶层(而不是在任何 tablix 中)进行类似的计算;尽管如果这是唯一的方法,我会选择隐藏详细信息行。

显然,Sum(Fields!flg1.Value) 不是答案,因为这要么是 returns 51(如果在组内的第一行),要么是 59(如果在组外)。 我也试过 Sum(Fields!flg1.Value, "bid") 但这不被认为是有效范围。 我也试过 Sum(First(Fields!flg1.Value, "bid")) 但显然你出于某种奇怪的原因不允许对第一个值求和(并且可能有相同的范围问题)。

使用 Sum(Max(Fields!flg1.Value, "bid")) 确实 有效,但感觉不对。有更好的方法吗?

(相关:是否有保存 那个 计算的结果的好方法,这样我以后也可以显示这些总数的总和,而无需更复杂的表达式?)

有两种基本方法可以做到这一点。

  1. 做你已经做过的事情 (Sum(Max(Fields!flg1.Value, "bid")))

  2. 对渲染值求和。为此,请检查包含所需数据的单元格的名称(检查其属性),然后使用类似 =SUM(ReportItems!flg1.Value) 的名称,其中 flg1 是文本框的名称,不一定总是相同的名称作为字段。