Как выбрать узел полей XML для всех строк - PullRequest
7 голосов
/ 12 декабря 2011

У меня есть такая таблица:

YEAR    int,
Fields  XML

Мой столбец XML имеет эту структуру для всех строк, но с разными значениями:

enter image description here

Как яможно получить такой результат:

YEAR         ID           NAME             LASTNAME
---------------------------------------------------
2011         1000         Nima               Agha
2011         1001         Begha              Begha
2011         1002         Jigha              Jigha
2011         1003         Aba                Aba
2012         1034         AAA                BBB
...

спасибо

1 Ответ

11 голосов
/ 12 декабря 2011

Как насчет этого:

 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 (вы можете выбрать любые имена, которые вам нравятся), к которым вы снова запрашиваете и извлекаете отдельные элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...