SSRS Report Builder 计算字段 SQL table(属性值)

SSRS Report Builder calculated fields with SQL table (attribute-value)

我有一个 SQL 月度值数据库,每个月都有一些 valuetypeline 和值,问题是当我试图在 ssrs 报告中聚合 tablix 矩阵中的信息时

数据库示例

CustomerId | Year | Month | ValueTypeId | Value
---------------------------------------------
     1     | 2020 |    1  |      1      | 500  
     1     | 2020 |    1  |      2      | 10  
     1     | 2020 |    2  |      1      | 200
     1     | 2020 |    2  |      2      | 15
     2     | 2020 |    1  |      1      | 100  
     2     | 2020 |    1  |      2      | 10  
     2     | 2020 |    2  |      1      | 1500
     2     | 2020 |    2  |      2      | 15

我已经为特定的 valuetypeid 创建了一个数据标签字段示例,同时考虑了我拥有的 2 个参数(年和月)

=IIF(Fields!ValueTypeId Value="1" and Fields!Year.Value=Parameters!Year.Value and Fields!Month.Value=Parameters!Month.Value,CDbl(Fields!ReportingValue.Value),CDbl(0))

当我创建一个 tablix 矩阵并将字段放入 [Sum(SalesMTD)] 时,想象年 =2020 和月 = 2,结果将是 200+1500 = 1700

如果我创建的 table 与添加 nuew 字段的示例相同,结果是这样的。

CustomerId | Year | Month | ValueTypeId | Value | SalesMTD
-----------------------------------------------------------
     1     | 2020 |    1  |      1      | 500   | 0  
     1     | 2020 |    1  |      2      | 10    | 0  
     1     | 2020 |    2  |      1      | 200   | 200
     1     | 2020 |    2  |      2      | 15    | 0
     2     | 2020 |    1  |      1      | 100   | 0 
     2     | 2020 |    1  |      2      | 10    | 0  
     2     | 2020 |    2  |      1      | 1500  | 1500
     2     | 2020 |    2  |      2      | 15    | 0

问题是当我们试图计算平均值时 [Avg(SalesMTD)] 因为系统不是这样做 (200+1500)/2 它接缝做 (0+0+200+0+0+ 0+1500+0)/8。对我来说有些不对劲。

有人可以帮助我吗?我试过 averageiff innoring 0 值,但我找不到它,无论如何 0 可能是一个可能的值,如果它是真实的,我认为问题更多的是在字段的计算中将 0 放在没有的行中实际上应该忽略或为空的条件。对于求和是有效的,但我发现对于平均值或其他计算是不正确的。

提前致谢

你的问题,你指出的是 AVG() 函数包含零。但是,它不包括 Null 个值。

因此,如果我们将零值转换为空值(SSRS 表达式中的Nothing),那么我们就可以解决您的问题。

使用下面的表达式

=Avg(
    IIF(Fields!SalesMTD.Value=0, Nothing, Fields!SalesMTD.Value)
    )

在下面的屏幕截图中,我使用了您的示例数据并添加了一个 SUM、一个标准 AVG,最后添加了上面的表达式(标记为 AGV2)。