我有一个每月值的SQL数据库,每个月都有一些值和值,问题是当我试图聚合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
我已经为一个特定的值创建了一个datalabel字段的例子,同时考虑到了我拥有的2个参数(年份和月份)。
=IIF(Field!ValueTypeId Value="1“和Field!Year.Value=Parameters!Year.Value和Field!Month.Value=Parameters!Month.Value,CDbl(Field!ReportingValue.Value),CDbl(0))
当我创建一个tablix矩阵,并将字段的求和(SalesMTD)假设年份=2020年和月份= 2,结果将是200+1500 = 1700
如果我创建的表与添加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,这是不对的事情。
有人能帮我吗?我尝试过将0值归零,但我找不到它,无论如何,如果0是真的话,它可能是一个可能的值,我认为问题更多的是在计算将0放入不符合实际应被忽略或空的条件的行中的字段时。因为和是有效的,但我发现,对于平均数或其他计算是不正确的。
提前感谢
发布于 2020-09-24 05:27:11
您的问题是,您指出的是AVG()
函数包含零。但是,它不包括Null
值。
因此,如果我们将零转换为空值( SSRS表达式中的Nothing
),那么我们可以解决您的问题。
使用以下表达式
=Avg(
IIF(Fields!SalesMTD.Value=0, Nothing, Fields!SalesMTD.Value)
)
在下面的屏幕截图中,我获取了您的样本数据,并添加了一个和,一个标准的AVG,最后是上面的表达式(标签为AGV2)。
https://stackoverflow.com/questions/64047014
复制