【问题标题】:String aggregation in SSRS 2005SSRS 2005 中的字符串聚合
【发布时间】:2009-06-09 21:32:41
【问题描述】:

使用 BIDS 2005 创建 rdl 报告。我想让报告聚合数据组中的所有字符串。我一直在寻找类似 Concatenate(Fields!CompanyName.Value, ",") 或 Join 或等效的东西。但它必须遍历给定范围内的所有记录。

我正在以日历格式创建用户活动报告(看起来像 google 的月视图日历)但是如果用户在一天中有多个活动,我希望所有活动都显示在同一个“日”框中'。这是需要聚合的问题还是有其他方法可以让 SSRS 报告执行此操作,我试图想办法让矩阵为我做这件事,但我碰壁了。

【问题讨论】:

  • 感谢 Joel 的标签更正,下次我一定会使用它们。

标签: .net reporting-services reporting reportingservices-2005


【解决方案1】:

在 SSRS 中进行聚合连接的常用方法是使用自定义代码。示例见此处:

http://blogs.msdn.com/suryaj/archive/2007/08/11/string-aggregation.aspx

这是基本形式的自定义代码:

Private CurrGroupBy As String = String.Empty
Private ConcatVal As String = String.Empty
Public Function AggConcat(GroupBy as String, ElementVal as String) as String
    If CurrGroupBy = GroupBy Then
        ConcatVal = ConcatVal & ", " & ElementVal 
    Else
        CurrGroupBy = GroupBy 
        ConcatVal = ElementVal 
    End If
    Return ConcatVal 
End Function

在您要显示的分组级别后跟此表达式:

=RunningValue(
     Code.AggConcat(
         Fields!YourFieldToGroupBy.Value
       , Fields!YourFieldToConcat.Value
       )
   , Last
   , "YourGroupName" 
   )

“YourGroupName”通常是“table1_Group1”,如果它是您在报告中创建的第一个表和第一个组,并且您没有指定其他名称。

【讨论】:

  • 到目前为止,谢谢!这是我读过的一种方法,但我也读过使用共享变量(CurrGroupBy 和 ConcatVal)是一个坏主意,说它们在报告的所有实例之间共享。在 Web 服务器上做坏事。你知道这是不是真的吗?
  • 这可能是真的,我不知道。如果您发现了,请在此处发布一些内容,我会在维基上给出答案。
  • 这是一个很大的帮助。文档中的示例似乎都没有显示为 RunningValue 调用自定义函数。
  • 谢谢!你知道如何只加入不同的吗?
【解决方案2】:

有一种更简单的方法可以通过分组值将值连接在一起。使用类似这样的表达式:

=Join(LookUpSet(Fields!GroupField.Value, Fields!GroupField.Value, Fields!ConcatField.Value, "DataSet1"), ",")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2020-12-17
    • 1970-01-01
    • 2013-07-04
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多