更改 SSRS 2014 列组中最大值的字段填充

Changing field fill of max value in column groups on SSRS 2014

我在 SSRS 中有一个 table,它同时具有行组和列组。

对于每个行组 [Cat],我需要突出显示列组中的最大值,即给定月份该类别的所有计数的总和。

我这辈子都弄不明白,所以如果有人能提供帮助那就太好了!

谢谢

Example of dataset

This is what I'm aiming for

Table in Design View

Current outcome

您将面临的问题是您将不得不尝试使用定义了范围的嵌套聚合。这可能是可能的(但我不认为这是...)

虽然有一种相当简单的方法可以修复它。我不能给出确切的答案,因为我不知道您的数据集是什么样的,但通常您必须对数据集进行一些更改,然后很简单。

所以假设你的数据集看起来像这样

Cat    myDate    counts
A      20171001  90
A      20171001  6
B      20171001  18
C      20171001  1
A      20171101  100
A      20171101  20
....
....

然后汇总所有内容,这样报告就不必对

之类的内容进行任何真正的汇总
SELECT 
*
, max(counts) OVER(PARTITION BY Cat) as maxInCat
FROM (
        SELECT 
            Cat, myDate
            , SUM(counts) as counts
        FROM myTable 
        GROUP BY Cat, myDate
    ) x

这将为您提供一个包含附加列 maxInCat 的数据集。此列将包含每个类别中的最大值,因此我们可以在报告中与此进行比较。

表达式可以是

=IIF(SUM(Fields!counts.Value)>0 and SUM(Fields!counts.Value) = Fields!maxInCat.Value, "Yellow", Nothing)

编辑

我更新了实际的背景色表达式,因为它没有考虑 blanks/zeros

忽略列未排序的事实,因为我没有时间,这是结果

我认为这是您需要的答案:

declare @Table as table
(
    [Cat] char(1),
    [Sector] tinyint,
    [Counts] int,
    [Date] date
);
insert into @Table
(
    [Cat],
    [Sector],
    [Counts],
    [Date]
)
values
('A', 1, 4103, '2017-10-01'), 
('A', 1, 3001, '2017-11-01'),
('A', 1, 1128, '2017-12-01'),
('A', 1, 5917, '2018-01-01'),
('A', 1, 9594, '2018-02-01'),
...

所以你知道数据来自哪里。

with [AggregatedData] as
(
    select 
        t.Cat,
        t.Sector,
        t.Counts,
        t.[Date],
        sum(t.Counts) over (partition by t.Cat, t.[Date]) as [SumCounts]
    from @Table as [t]
)
select 
    ad.Cat,
    ad.Sector,
    ad.Counts,
    ad.[Date],
    ad.SumCounts,
    max(ad.SumCounts) over (partition by ad.[Date]) as [MaxSumCounts]
from [AggregatedData] as [ad]

那么在SSRS中,可以使用:

=iif(IsNothing(Fields!SumCounts.Value) = FALSE AndAlso Fields!SumCounts.Value = Fields!MaxSumCounts.Value, "Yellow", "Transparent")

给出: