ssrs中的多行到单行

时间:2014-12-10 14:30:32

标签: sql sql-server-2008 ssrs-2008-r2

我在SSRS 2008 R2的表格中显示了三个数据字段。

Unique_Number
Communication_Type(这将包含电话,传真,电子邮件)
Communication_data(包含上述数据)

并非所有唯一号码都具有所有通信类型。即他们可能只有一部电话。

我的数据在表格中显示为多行数据:

Unique_Number.....Communication_Type....Communication_Data

1..............................Tel..................................12345

1..............................Fax..................................12346 

1..............................Email...............................a@b.com

2..............................Tel...................................23456

3..............................Fax..................................45678

我希望我的桌子看起来像:

Unique Number...Tel........Fax.........Email

1..........................12345...12346.....a@b.com

2..........................23456...blank......blank

3..........................blank....45678.....blank

我可以使用行可见性功能隐藏多行,但当然我丢失了一些数据。

我还在标有电话的单元格中使用了此功能:  =iif(Fields!Communication_Type.Value = "Tel", Fields!Communication_Data.Value, "")

除了每个通信类型的数据之外,这种工作显示在单独的一行上。

如何使用查询设计器完成此工作?

1 个答案:

答案 0 :(得分:0)

如果您在查询中执行透视,则无需执行任何表达式或任何操作。这在性能方面要好得多,因为所有内容都将在查询中完成,而不是在报告中完成,如果不进行数据透视,则需要额外的时间来渲染您想要添加的所有表达式。

尝试将此作为在行/列上实现数据透视的查询数据集:

SELECT unique_number,Email,Fax,Tel FROM (
select unique_number,communication_type,communication_data
from *tablename*
)t
pivot (max(communication_data) for communication_type in ([Email],[Fax],[Tel]))piv;

演示小提琴:SQLFiddle