65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Server 2005 报告服务:将列显示为行

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.43/5 (5投票s)

2008年10月25日

CPOL

3分钟阅读

viewsIcon

67140

downloadIcon

909

本文介绍了一种使用 SQL 报表服务创建报表的解决方案,该报表将列数据显示为行;此外,这些列会为每一数据行水平重复。文章还提供了一个使用“Northwind”数据库作为数据源的示例源项目。

Sample Image - maximum width is 600 pixels
图 1

引言

本文介绍了一种使用 SQL 报表服务创建报表的解决方案,该报表将列数据显示为行;此外,这些列会为每一数据行水平重复。文章还提供了一个使用“Northwind”数据库作为数据源的示例源项目。

背景

问题:给定一个数据集,如何使用 SQL Server 2005 报表服务生成报表,以便为相应的数据行生成一个矩阵列。

示例
给定数据集(如图表左列所示,见下表),使用 SQL Server 2005 报表服务显示报表的解决方案,类似于下表右侧所示。

给定的数据集

所需的报表格式

列1

列2

列 3

列 4

d11

d12

d13

d14

d21

d22

d23

d24

d31

d32

d33

d34

» 报表

d11

d21

d31

行标题1

d12

d22

d32

行标题2

d13

d23

d33

行标题3

d14+d13

d24+23

d34+d33

一些现有的解决方案包括:

  • 使用 unpivot 关键字更改 SQL 查询以将列转换为行:(类似于矩阵转置函数)
    此方法的缺点是显示的行数可能远小于转置的行数,并且 SQL 查询复杂。
  • 使用 MS SQL Server 2008 tablix 控件
    使用 MS SQL Server 2008 可能并非总是可行。

不清楚如何结合上述解决方案,并且找不到类似本文提出的解决方案。因此,本文旨在通过示例为特定问题提供一个简单的解决方案。

程序说明

解决方案通过一个示例进行解释。主要思想是使用一个带有汇总列分组的报表元素:矩阵
(请参考其他地方了解使用 Visual Studio 创建报表项目的基本知识)

0. 创建报表项目

创建一个报表项目,并在项目中添加一个新报表。

1. 创建数据源

图 2 显示了示例中使用的数据源以及连接到“Northwind”示例数据库后获得的结果(数据集)。第一步是为报表创建所需的数据集。



图 2

2. 创建报表定义

下面显示的报表定义并不完全如图 1 所示。它经过轻微调整,以显示报表中嵌入的各种报表元素的区别。如图 1 所示的报表可以通过重新排列报表元素(也包含在源代码中)获得。

图 3(下文所示)显示了此示例项目中使用的报表元素。


图 3

创建以下报表的步骤

步骤 0:创建如图 2 所示的数据集。

  1. 报表元素:矩阵添加到报表中(从工具栏将矩阵报表元素拖到报表上)。
    (请参见图 4 以了解矩阵元素)

    图 4
  2. 数据集:客户 ID 添加到列组。
    将“数据集”中的数据集:客户 ID 列拖到矩阵元素的“列组”中(拖到图 4 中标记为style='font-family: Verdana'>Columns 的单元格)。
  3. 报表项:列表添加到“数据”单元格中(添加到图 4 中标记为Data 的单元格,列表显示在图 3 中粗栗色边框内)。
  4. 向在步骤 3 中添加的列表中添加四个报表元素:文本框。根据需要重新排列文本框。
    (将文本框元素从工具栏拖到上面的“数据”单元格)
  5. 数据集:公司名称 拖到第一个文本框中。
    继续将其他数据集列添加到其他文本框中。
  6. 将“行”的宽度设置为 0(另请参见图 3 以获取说明)。
  7. 复制四个文本框(在步骤 4 中添加)并将其粘贴到矩阵外部,以添加行标签(图 3 中的第一组列)。
    将第一个文本框的文本更改为“客户名称”,并对其他标签进行类似更改。

现在,如果一切顺利,您的预览应该会显示如图 5 所示的报表。


图 5

现在可以重新排序报表元素,以获得类似于图 1 所示的报表。(另请参见源代码)

© . All rights reserved.