我有一张这样的表:
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
...
感谢
答案 0 :(得分: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
,然后从<Person>
列中将每个Fields
节点提取到名为E
的“内联XML表”中名为P
的单个XML列(您可以选择您喜欢的名称),您再次查询并从中提取单个元素。