SSRS分组聚合问题

时间:2017-05-01 18:36:34

标签: sql-server reporting-services aggregate

我正在创建一个实际上是7个报告的报告。第一页需要有每个报告的记录计数如下:

                 Current    Old    Total   

    Report 1     1300       1200    2500  
    Report 2     2500       1000    3500

我创建了一个包含行组的表,并使用像这样的表达式来获取当前值和旧值:

    =IIF(Fields!praccode.Value <> "DO", sum(CountDistinct(Fields!last_name.Value & Fields!first_name.Value)),0)

我遇到的一个问题是praccode.Value有多个值&lt;&gt; “DO”,所以它给了我每个值的组计数,我只需要一个总计所有值的值。我怎样才能获得所有值的单一计数&lt;&gt; “DO”?

我发现的另一个问题是,当我添加更多这些表达式时,报告运行得越来越慢。直接在SQL而不是SSRS中创建这些计数是否更好?

2 个答案:

答案 0 :(得分:0)

由于您要为每条记录评估 praccode 字段的值,您需要将其包含在聚合函数中:

=CountDistinct(IIF(Fields!praccode.Value <> "DO", Fields!last_name.Value & Fields!first_name.Value, NOTHING))

您需要使用NOTHING作为IIF的另一个选择,以便在您想要唯一值时不计算它。

每个表达式都需要花费一点时间,因此您可以对查询执行的任何计算都有助于加快报告速度。你在同一行中计算一个计数的原始表达式是不必要的,因为它总是将一个值相加但仍然使它变慢。

答案 1 :(得分:0)

我明白了。我需要右键单击表达式框并选择Add Total。然后隐藏原始表达框。