使用SSRS将单个单元格中的值转换为多行

时间:2014-10-27 17:53:10

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

SQL表中的一个特定字段具有以下格式的值。

Value11,value12,Value13

Value21,value22,value23

...

...

我需要使用SSRS将文本中的每一行分成单独的行。 例如,我将在报告中获得2行以获取上述数据。 有没有办法在VS或报表生成器中使用报表项目?

提前致谢。

更新

嗨,下面是表格的DDL

TBLTEST

[id] int

[描述] VARCHAR(MAX)

让我们假设下面只有一条记录

插入tblTest ([ID],[描述]) VALUES (1,' Value11,value12,Value13

Value21,value22,value23&#39)

因此,在Description列的上面有一个回车Caharacter。这将在描述行中有2行。

所以我的要求是当我检索数据时,我应该进入以下格式。

ID,说明

1,Value11,value12,Value13

1,Value21,value22,value23

2 个答案:

答案 0 :(得分:0)

使用此,

select '1' as Id, Value11+','+value12+','+Value13 as Description into tblTest from XYZ;

Value11,value12,Value13 all应该在String

答案 1 :(得分:0)

您可以使用此SELECT将数据传递到Reporting Services

SELECT t1.id, t2.splittedDescriptions
FROM 
    (
        SELECT tblTest.id,
        CAST('<row>' + REPLACE(tblTest.[Description], CHAR(13) + CHAR(10), '</row><row>') + '</row>' AS XML) as xmlRow 
        FROM tblTest
    ) t1
    CROSS APPLY
    ( 
        SELECT xmlTable.splittedRow.value('.', 'VARCHAR(MAX)') as splittedDescriptions
        FROM t1.xmlRow.nodes('/row') AS xmlTable(splittedRow)
    ) t2

它使用XMLnodes() method在找到CRLF时对您的描述进行拆分。

它适用于单个CRLF,如果您需要使用双CRLF,则只需修改SELECT

示例 - 输入数据:

INSERT INTO tblTest ([id],[Description]) VALUES
    (1, 'val11, val12, val13' + CHAR(13) + CHAR(10) + 'val21, val22, val23')
INSERT INTO tblTest ([id],[Description]) VALUES
    (2, 'val31, val32, val33')
INSERT INTO tblTest ([id],[Description]) VALUES
    (3, 'val41, val42, val43' + CHAR(13) + CHAR(10) + 'val51, val52, val53' + CHAR(13) + CHAR(10) + 'val61, val62, val63')

示例 - 输出:

id          splittedDescriptions
----------- --------------------
1           val11, val12, val13
1           val21, val22, val23
2           val31, val32, val33
3           val41, val42, val43
3           val51, val52, val53
3           val61, val62, val63