2014-10-27 75 views
0

SQL表中的一个特定字段具有以下格式的值。使用SSRS将单个单元格中的值分成多个行

Value11,value12,Value13

Value21,value22,value23

...

...

我需要获得上述各行的文本到个人使用SSRS的行。例如,我会在报告中获得2行以上数据。 有没有办法使用VS或Report Builder中的报告项目来做到这一点?

在此先感谢。

更新

您好,下面是DDL为表

TBLTEST

[ID]诠释

[说明] VARCHAR(MAX)

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

Insert into t blTest ([ID],[描述]) VALUES (1, 'Value11,value12,Value13

Value21,value22,value23')

因此,有在上述插入一个回车Caharacter说明栏。这将在描述行中有2行。

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

ID,说明

1,Value11,value12,Value13

1,Value21,value22,value23

+0

Gihan,是分组你正在寻找总是以格式 “值N”,其中N是一些单个位数字?制作新线的标准是什么?此表中还有其他栏目吗?如果您为此表提供了DDL,那将会很有帮助。 – Michael 2014-10-28 21:15:56

+0

请找到以上更新的要求。谢谢 – 2014-10-29 06:43:29

+0

你想把回车作为分隔符? – pancho018 2014-10-29 10:46:53

回答

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 
+0

非常感谢。这非常有帮助 – 2014-10-30 05:55:43

0

使用此,

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

Value11,value12,Value13所有应在字符串中

相关问题