1

您好,我在 SSRS 报告中有以下专栏。

列名(标题)

Mehta, Natasha(18)——它的 Title+(count) 值
Rodriguez, Lauren(19)
Harwood, Matt(19)
Lloyd, David(19)


我想从 SSRS 报告的上列中找到平均值(18+19+19+19/4)。我该怎么办?

4

2 回答 2

1

假设该列称为“标题”,则以下可能有效:

SQL

=SUM(CAST(LEFT(RIGHT([Title], 3), 2)) AS int) / COUNT([Title]) * 1.0

SSRS

=Sum(CDbl(Left(Right(Fields!Title.Value, 3), 2))) / CDbl(Count(Fields!Title.Value))

如果我们使用第一行数据 ( Mehta, Natasha(18) ) 作为测试字符串来逐步执行此操作,我们会得到:

  1. Sum(CDbl(Left( Right(Fields!Title.Value, 3), 2))) / CDbl(Count(Fields!Title.Value))
    • 这需要字符串'Mehta, Natasha(18)'最右边的 3 个字符,这将返回字符串:'18)'
  2. Sum(CDbl( Left(Right(Fields!Title.Value, 3), 2), 2))) / CDbl(Count(Fields!Title.Value))
    • Sum(CDbl( Left('18)'), 2), 2))) / CDbl(Count(Fields!Title.Value))
    • 这从字符串'18)'中获取最左边的 2 个字符,返回字符串:'18'
  3. Sum( CDbl(Left(Right(Fields!Title.Value, 3), 2))) / CDbl(Count(Fields!Title.Value))
    • Sum( CDbl('18')) / CDbl(Count(Fields!Title.Value))
    • 将字符串'18'转换为双精度,返回:18.0
    • SQL 中的CAST()函数(可以执行 的等价物CDbl())可以在这里阅读。
  4. Sum(CDbl(Left(Right(Fields!Title.Value, 3), 2)))/ CDbl(Count(Fields!Title.Value))
    • 这将汇总列中存在的转换金额,如果我们假设您在示例中提到的所有行都在列中,那么这将给出等价于...
    • Sum(18.0, 19.0, 19.0, 19.0)/ CDbl(Count(Fields!Title.Value))
    • 这将返回整数值:75
  5. Sum(CDbl(Left(Right(Fields!Title.Value, 3), 2))) /CDbl(Count(Fields!Title.Value))
    • 75 /CDbl(Count(Fields!Title.Value))
    • 在这种情况下,这将计算行数并转换为双精度数。
    • 注意:这将在求和之后强制转换,即转换整数值 4 并返回一个双精度值:4.0
  6. Sum(CDbl(Left(Right(Fields!Title.Value, 3), 2))) / CDbl(Count(Fields!Title.Value))
    • 或者 75 / 4.0
    • 给出最终结果:18.75
    • 注意:如果分母不是双精度数,它将执行数字的截断(在 SQL 中它将对数字进行四舍五入)
于 2012-10-15T04:17:09.887 回答
0

我会在数据集查询本身中使用 SQL 函数,以便将数字分成独立的列。将数据正确地放入报告中比将其固定在报告中更正确。

于 2012-08-05T06:57:59.707 回答