Как насчет этого:
SELECT
Year,
E.P.value('(ID)[1]', 'INT') AS 'ID',
E.P.value('(Name)[1]', 'VARCHAR(50)') AS 'Name',
E.P.value('(LastName)[1]', 'VARCHAR(50)') AS 'LastName'
FROM
dbo.YourTable
CROSS APPLY
Fields.nodes('/Employees/Person') AS E(P)
В основном вы выбираете Year
из базовой таблицы, а затем извлекаете каждый узел <Person>
из столбца Fields
в "встроенную таблицу XML", называемуюE
с одним столбцом XML с именем P
(вы можете выбрать любые имена, которые вам нравятся), к которым вы снова запрашиваете и извлекаете отдельные элементы.