У меня есть следующий запрос:Split FOR XML PATH результатов в отдельные строки
SELECT
101 AS TeacherID
,s.ID
,s.First
,s.Last
FROM dbo.Students s
FOR XML PATH('Student'), ROOT('Students')
, который генерирует выходной сигнал:
<Students>
<Student>
<TeacherID>101</TeacherID>
<ID>14</ID>
<First>Mark</First>
<Last>Smith</Last>
</Student>
<Student>
<TeacherID>101</TeacherID>
<ID>15</ID>
<First>Josephina</First>
<Last>Hewitt</Last>
</Student>
</Students>
Я хочу, чтобы разбить каждую группу в свои собственные ряды (в одну XMLFormat колонка):
AdministratorID AdministratorName XMLFormat
------------------------------------------------------------------------------------------------------------------------------------
125 Bertha <Student><TeacherID>101</TeacherID><ID>14</ID><First>Mark</First><Last>Smith</Last></Student>
125 Bertha <Student><TeacherID>101</TeacherID><ID>15</ID><First>Josephina</First><Last>Hewitt</Last></Student>
Я попытался с помощью таблиц и столбцов метод Alias:
SELECT 125 AS AdministratorID,
'Bertha' AS AdministratorName,
t.c AS XMLFormat
FROM
(
SELECT
101 AS TeacherID
,s.ID
,s.First
,s.Last
FROM dbo.Students s
FOR XML PATH('Student'), ROOT('Students')
) t(c)
но этот запрос генерирует одну строку данных, причем весь XML в одном поле XMLFormat.
Я думал, что мне может понадобиться использовать метод .nodes(), но когда я добавляю .nodes ('/ Students/Student') к псевдониму t (c), я получаю «Неверный синтаксис рядом с.».
Я хочу избежать пометок данных в переменную XML перед использованием метода .nodes(), потому что текст может быть очень длинным.