Reputation: 37
I would expect the cdata tags to wrap the text value of col2 element but it is not doing so. I was using xml raw but because i got hit with some invalid xml characters in the data i now have to wrap everything with the cdata tags so I guess the only way to do this is by using explicit mode. Without the insert into the table the cdata tags are shown but the insert into the table removes them, I suspect it has something to do with the automatic xml data type conversion. Also the order by is not sorting by the numeric data type, it is doing a string sort
-- drop table Table1
-- truncate table Table1
create table dbo.Table1
(
RowId int not null identity,
BatchId int not null,
RequirementId int not null,
DataSheetName nvarchar(max) null,
TestCaseName nvarchar(max) null,
GridStart nvarchar(max) null,
GridId int not null,
Col1 nvarchar(max) null,
Col2 nvarchar(max) null
)
create table results (
GridName nvarchar(max),
GridXML xml,
)
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','Grid', 1,'','Deal Number')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','1', 1,'r1','r1c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','2', 1,'r2','r2c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','3', 1,'r3','r3c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','4', 1,'r4','r4c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','5', 1,'r5','r5c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','6', 1,'r6','r6c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','7', 1,'r7','r7c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','8', 1,'r8','r8c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','9', 1,'r9','r9c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','10', 1,'r10','r10c1')
insert into Table1(BatchId, RequirementId, DataSheetName,TestCaseName,GridName,GridStart,GridId, Col1,Col2)
values(1,1,'DataSheet','TestCase1','Grid1','END', 1,'','')
insert into results
select Z.GridName,
(select * from
( select 1 [Tag], null [Parent], null [DocumentElement!1!],
null [tr!2!], null [tr!2!RowId!Element], null [tr!2!Col2!CDATA]
union all
select 2 as Tag, 1 as Parent, 'DocumentElement',GridStart,GridStart, Col2
from Table1 S
where GridStart != 'GRID' and GridStart != 'END'
and Z.DataSheetName = S.DataSheetName
and Z.TestCaseName = S.TestCaseName
and Z.GridName = S.GridName
and Z.GridId = S.GridId
and Z.BatchId = S.BatchId
)
as GridData
order by [tr!2!RowId!Element]
for xml explicit
) as G
from dbo.Table1 Z
select * from results
Generated output:
<DocumentElement>
<tr>1<RowId>1</RowId><Col2>r1c1</Col2></tr>
<tr>10<RowId>10</RowId><Col2>r10c1</Col2></tr>
<tr>2<RowId>2</RowId><Col2>r2c1</Col2></tr>
<tr>3<RowId>3</RowId><Col2>r3c1</Col2></tr>
<tr>4<RowId>4</RowId><Col2>r4c1</Col2></tr>
<tr>5<RowId>5</RowId><Col2>r5c1</Col2></tr>
<tr>6<RowId>6</RowId><Col2>r6c1</Col2></tr>
<tr>7<RowId>7</RowId><Col2>r7c1</Col2></tr>
<tr>8<RowId>8</RowId><Col2>r8c1</Col2></tr>
<tr>9<RowId>9</RowId><Col2>r9c1</Col2></tr>
</DocumentElement>
<DocumentElement>
<tr>1<RowId>1</RowId><Col2><![CDATA[r1c1]]</Col2></tr>
<tr>2<RowId>2</RowId>Col2><![CDATA[r2c1]]</Col2></tr>
<tr>3<RowId>3</RowId>Col2><![CDATA[r3c1]]</Col2></tr>
<tr>4<RowId>4</RowId>Col2><![CDATA[r4c1]]</Col2></tr>
<tr>5<RowId>5</RowId>Col2><![CDATA[r5c1]]</Col2></tr>
<tr>6<RowId>6</RowId>Col2><![CDATA[r6c1]]</Col2></tr>
<tr>7<RowId>7</RowId>Col2><![CDATA[r7c1]]</Col2></tr>
<tr>8<RowId>8</RowId>Col2><![CDATA[r8c1]]</Col2></tr>
<tr>9<RowId>9</RowId>Col2><![CDATA[r9c1]]</Col2></tr>
<tr>10<RowId>10</RowId>Col2><![CDATA[r10c1]]</Col2></tr>
</DocumentElement>
Upvotes: 0
Views: 113