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
答案 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
它使用XML
和nodes()
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