如何在SSRS中将数据集或组显示为逗号分隔列表?

问题描述:

在我的SQL数据库,我有一个一对多的关系,这样的事情:如何在SSRS中将数据集或组显示为逗号分隔列表?

 
Teacher Student 
John  Alex 
John  Mike 
John  Sean 
Bob  Jack 
Gary  George 
Gary  Paul 

我想显示一个表格,列出每个教师,与学生作为一个逗号分隔的列表,像这样:

 
Teacher Students 
John  Alex, Mike, Sean 
Bob  Jack 
Gary  George, Paul 

This question介绍如何做到这一点上的SQL Server结束,但有没有办法做到这一点对事物的SSRS的一面呢?

这*的答案都代表一种技术达到这个目的:

String aggregation in SSRS 2005

这样做的缺点的技术是,它使用中的代码模块,这可能引起并发问题,如果报告在网络上承载的共享变量。

我也碰到过另一个解决方法:

创建自定义功能,如GetStudentList(TeacherId为整数,的ConnectionString作为字符串),其目的是返回基于指定的学生名单老师。

然后可以编写此函数以打开与数据库的连接,运行查询,处理结果,然后返回它们。但是,这意味着打开连接并为每一行运行查询,这似乎是这种格式化的大量开销(更不用说需要传入连接字符串)。

这主要基于Experts' Exchange article

添加分组的老师,使用.NET加入附加明细行

加入证明在BOL多值参数...所以理论上它可用于结果数据集

Join

Join and multi-value parameters

+0

这看起来很有希望,GBN。但是我很难弄清楚如何将特定组的字段值作为数组来获取。有任何想法吗? – AaronSieb 2008-10-16 14:39:06

+0

作为一个具体的例子,我试过把这个表达式放在组页脚中:= Join(Fields!Student,“,”)。这编译,但导致#Error。 – AaronSieb 2008-10-16 14:49:22

我发现一个更简单,直接的方法来做到这一点 - 添加表达式如下:

=Join(LookUpSet(Fields!TeacherName.Value, 
    Fields!TeacherName.Value, 
    Fields!StudentName.Value, 
    "YourTeacherDataSet"), ",")