更改 rdl 报告中最高总列值的颜色

change colour of highest total column value in rdl report

在 rdl 报告中,我将总计列显示为总和聚合,我想突出显示总计中的最高值。

这是一个包含很多假设的通用答案。由于您的问题没有包含足够的信息来提供明确的答案,但希望这会给您足够的信息来解决您的问题。

要重新创建它,请执行以下操作(然后根据您的具体情况进行调整)

创建新报告。

添加数据集并使用以下查询作为数据集查询

-- create some sample data
DECLARE @t TABLE(Customer varchar(10), Product varchar(10), Quantity int)
INSERT INTO @t VALUES 
('Dave', 'Hammer', 6), ('Dave', 'Saw', 6),('Dave', 'Hammer', 1),
('George', 'Drill', 3),('George', 'Hammer', 6),('George', 'Saw', 6),('George', 'Hammer', 1),
('Mary', 'Drill', 3),('Mary', 'Hammer', 6),
('Jane', 'Saw', 6),('Jane', 'Hammer', 1),('Jane', 'Drill', 3)

-- return the sample data plus a total per customer
SELECT *
        , CustomerTotal = SUM(Quantity) OVER(PARTITION BY Customer)
    FROM @t

这给使用以下结果

接下来向报表添加一个 Matrix 控件。 将字段拖到矩阵中,如下所示

客户"Rows";乘积到 "Columns";数量 "Data"

您现在应该有一个矩阵,下面显示了一些行和列组。 接下来我们需要添加总计列,因此右键单击 "Product" 列组 select "Add Total => After"

最后,我们需要测试总计列中的值是否与数据集中最大的 CustomerTotal 匹配。如果匹配,则将文本框 color 属性 更改为 "Red"。

我们可以在文本框中使用这个表达式 color 来做到这一点..

=IIF(
    Sum(Fields!Quantity.Value) = MAX(Fields!CustomerTotal.Value, "DataSet1"), 
    "Red",
    "Black")

这样做是获取当前范围(整行)中的总数,并将其与范围为 "Dataset1" 的最高 CustomerTotal 进行比较,后者是整个数据集。如果两者匹配,则将 vlue 设置为 "Red",否则将其设置为 "Black"

稍微整理一下,最终输出如下所示。