我有这样一张桌子:

YEAR    int,
Fields  XML

我的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
...

谢谢

===============>>#1 票数: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)

您基本上从基表中选择Year ,然后从Fields列中将每个<Person>节点提取到名为E的“内联XML表”中,并使用一个名为P XML列(您可以选择您喜欢的任何名称)您再次查询并从中提取单个元素。

  ask by Arian translate from so

未解决问题?本站智能推荐: