c# - 报表查看器中的水平表

标签 c# sql-server-2008 reporting-services reportviewer

我需要报表查看器中的表格来显示从水平表格中的数据源中提取的项目列表。

数据源仅包含包含在一个 SQL 列中的字符串列表。

Horizontal report table example

到目前为止,我尝试过的表格仅将其显示在一列中。

非常感谢!

最佳答案

这是我对要求的理解。 从表中的项目列表中选择并在水平表中报告它们。表中的值可能已知也可能未知。

在我的例子中,我从一个选择中构建一个单一的字符串,从一个项目列表中生成一个水平连续的字符串到一个变量中。

然后我使用新变量构建一个动态 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)

希望这对您有所帮助。我期待看到关于这个的其他答案

关于c# - 报表查看器中的水平表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15805092/

相关文章:

sql-server - 关于已弃用的功能(多于两部分的列名称)

c# - 编号列表框

c# - 使用linq动态比较两个对象列表

c# - Windows应用程序中的身份验证 "Cannot work with a MobileServiceClient that does not specify a gateway URI."

reporting-services - Report.aspx 到 ReportViewer.aspx

tsql - 查询以获取所有带参数的 SSRS 订阅列表

reporting-services - 报告服务中的格式化日期

c# - 无法生成:Microsoft/aspnetcore的 list :2.1找不到Visual Studio 7.5.2 Mac OS X

sql-server-2008 - CTE 返回错误

sql - 将 c# DataTable 作为参数传递给 MS SQL Server 2008 中的存储过程