在SSRS报告中查找平均值

时间:2012-07-17 14:03:14

标签: ssrs-2008 reporting-services

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

列名(标题)

Mehta,Natasha(18)----其标题+(计数)值
罗德里格兹,劳伦(19)
哈伍德,马特(19)
劳埃德,大卫(19)


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

2 个答案:

答案 0 :(得分: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(左(Right(Fields!Title.Value, 3),2)))/ CDbl(Count(Fields!Title.Value))
    • 这会占用字符串'Mehta,Natasha(18)'的3个最右边的字符,它们将返回字符串: '18)'
  2. 总和(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))
    • 这会从sting '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'转换为double,返回: 18.0
    • 可以阅读here中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(左(右(Fields!Title.Value,3),2)))/ CDbl(Count(Fields!Title.Value))
    • 75 / CDbl(Count(Fields!Title.Value))
    • 这将计算行数,在这种情况下,并转换为double。
    • 注意:这会强制转换之后总和,即转换整数值4并返回双倍值: 4.0
  6. Sum(CDbl(Left(Right(Fields!Title.Value, 3), 2))) / CDbl(Count(Fields!Title.Value))
    • 75 / 4.0
    • 给出最终结果: 18.75
    • 注意:如果分母不是双精子,它将执行截断数字(在SQL中它将围绕数字)

答案 1 :(得分:0)

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