如何为所有行选择XML字段节点

Ari*_*ian 8 xml sql t-sql sql-server sql-server-2008

我有这样一张桌子:

YEAR    int,
Fields  XML
Run Code Online (Sandbox Code Playgroud)

我的XML列对所有行都有这种结构,但具有不同的值:

在此输入图像描述

我怎么能得到这个结果:

YEAR         ID           NAME             LASTNAME
---------------------------------------------------
2011         1000         Nima               Agha
2011         1001         Begha              Begha
2011         1002         Jigha              Jigha
2011         1003         Aba                Aba
2012         1034         AAA                BBB
...
Run Code Online (Sandbox Code Playgroud)

谢谢

mar*_*c_s 11

这个怎么样:

 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)
Run Code Online (Sandbox Code Playgroud)

您基本上是Year从基表中进行选择,然后<Person>Fields列中提取每个节点到一个"内联XML表",调用E一个名为XML的列P(您可以选择您喜欢的任何名称),然后再次查询和提取个体来自的元素.