【问题标题】:Horizontal table in Report Viewer报表查看器中的水平表格
【发布时间】:2013-04-04 07:32:20
【问题描述】:
我需要报表查看器中的表格,以在水平表格中显示从数据源中提取的项目列表。
数据源只包含一个 SQL 列中包含的字符串列表。
到目前为止我尝试过的表格只显示在一个列中。
非常感谢!
【问题讨论】:
标签:
c#
sql-server-2008
reporting-services
reportviewer
【解决方案1】:
这是我对要求的理解。
从表中的项目列表中选择并在水平表中报告它们。表中的值可能未知,也可能未知。
在我的示例中,我从选择中构建单个字符串,将项目列表中的水平连续字符串生成到变量中。
然后我使用新变量构建一个动态 SQL 语句,并包括从我想要的表中选择的内容。在动态 SQL 中,我做了一个简单的替换,因此 PIVOT 的格式正确。这解决了事先不知道表中存在哪些数据的问题。 Pivot 要求您使用字段值标记列,如果表中的值未知或不断变化,这可能是一个挑战。
DECLARE @FieldValueString VARCHAR(MAX)
SELECT @FieldValueString = Coalesce(@FieldValueString + ',', '') + cast(ssctab as varchar) from RA_sysScreen
PRINT @FieldValueString
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * FROM
(SELECT ssctab FROM [RA_sysScreen])qry
PIVOT (MAX(ssctab) FOR ssctab in (['+REPLACE(@FieldValueString,',','],[')+'])) as pvt'
print @sql
EXEC(@sql)
希望这会有所帮助。我期待在这个问题上看到其他答案