如何在SSRS中表示未知数量的列?

Jos*_*amm 9 sql-server-2000 reporting-services

我正在使用Sql Server Reporting Services中的一个相当复杂的报告.我的SP返回动态数量的列,每列都是动态命名的.

基本上想到一个时间保持应用程序.动态的每个列表示为该团队收取时间的时间段.如果在报告涵盖的时间段内没有向该桶收取时间,则不显示.每个桶都有自己的标识符,我需要将其作为列标题.

我有一个SP返回这一切.它通过使用exec语句执行一些动态SQL来实现它(丑陋我知道但是我在SQL 2000上因此PIVOT选项不起作用)

我可以有无限数量的桶,任何或所有可能会显示.

我找到了这个 - http://www.codeproject.com/KB/reporting-services/DynamicReport.aspx - 这很有帮助,但在这个例子中他有一个有限数量的列,他只是根据哪些列隐藏或显示它们值.在我的情况下,我有一个可变数量的列,所以我需要报告来添加列.

有什么想法吗?

小智 10

只要您知道最大列数,就可以在时尚之后执行此操作.

首先,使用查询结果命名列,以便将其传递给查询或在那里派生.其次,只需将报表构建为具有最大列数,并在它们为空时隐藏它们.

例如,我必须建立一份报告,报告长达一年的月度销售数字,但月份不一定从1月份开始.我在一列中传回了月份名称,然后是我的报告的数字.在.rdl上,我构建了12组列,每个月可能一个,并且只使用表达式来隐藏列,如果它是空的.结果是报告似乎扩展到所需的列数.

当然,它并不是真正的动态,因为它可以在不知道上限的情况下扩展到你需要的范围.


小智 8

这可以做到.我这样做了,它工作正常.您不必知道最大列数或在我的方法中显示和隐藏列.使用矩阵并修改sp以将动态数据返回到此博客文章中提到的结构http://sonalimendis.blogspot.com/2011/07/dynamic-column-rdls.html