如何仅对 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.Value
和 Fields!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"))
确实 有效,但感觉不对。有更好的方法吗?
(相关:是否有保存 那个 计算的结果的好方法,这样我以后也可以显示这些总数的总和,而无需更复杂的表达式?)
有两种基本方法可以做到这一点。
做你已经做过的事情 (Sum(Max(Fields!flg1.Value, "bid"))
)
对渲染值求和。为此,请检查包含所需数据的单元格的名称(检查其属性),然后使用类似 =SUM(ReportItems!flg1.Value)
的名称,其中 flg1
是文本框的名称,不一定总是相同的名称作为字段。
我不确定 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.Value
和 Fields!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"))
确实 有效,但感觉不对。有更好的方法吗?
(相关:是否有保存 那个 计算的结果的好方法,这样我以后也可以显示这些总数的总和,而无需更复杂的表达式?)
有两种基本方法可以做到这一点。
做你已经做过的事情 (
Sum(Max(Fields!flg1.Value, "bid"))
)对渲染值求和。为此,请检查包含所需数据的单元格的名称(检查其属性),然后使用类似
=SUM(ReportItems!flg1.Value)
的名称,其中flg1
是文本框的名称,不一定总是相同的名称作为字段。