【发布时间】:2020-09-20 16:37:34
【问题描述】:
我有一个以 XML 形式提供输出的查询。
DECLARE @XMLDATA1 XML
SET @XMLDATA1 = (
SELECT StudentId AS 'StudentID',
StudentName AS 'StudentName',
StudentAge AS 'Age',
StudentYear 'Year'
FROM Student
ORDER BY StudentId
FOR XML PATH('StudentLine')
)
SELECT ( CAST(@XMLDATA1 AS XML ))
FOR XML PATH ('StudentRecords') , Root('Student')
示例输出如下。
<StudentRecords>
<Student>
<StudentLine>
<StudentID>12</StudentID>
<StudentName>Kevin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
<StudentLine>
<StudentID>13</StudentID>
<StudentName>Peter</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
<StudentLine>
<StudentID>14</StudentID>
<StudentName>Martin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
<StudentLine>
<StudentID>15</StudentID>
<StudentName>Justin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
</Student>
</StudentRecords>
我想根据 sql 查询中的硬编码数字将这些记录从 <StudentRecords> 标记中拆分出来。例如,如果我想拆分为 3 条记录,则 xml 将如下所示。
<StudentRecords>
<Student>
<StudentLine>
<StudentID>12</StudentID>
<StudentName>Kevin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
<StudentLine>
<StudentID>13</StudentID>
<StudentName>Peter</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
<StudentLine>
<StudentID>14</StudentID>
<StudentName>Martin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
</Student>
</StudentRecords>
<StudentRecords>
<Student>
<StudentLine>
<StudentID>15</StudentID>
<StudentName>Justin</StudentName>
<Age>10</Age>
<Year>5</Year>
</StudentLine>
</Student>
</StudentRecords>
可能有这样的场景,比如有 100000 个<StudentLine> 标签的记录,硬编码的数字可以是 2000。
有人可以帮助我实现这一目标。
谢谢。
【问题讨论】:
标签: sql-server xml tsql grouping xquery