[英]Xml to column based data using SQL + XQuery
I have the following xml in my xml-typed column (xml itself is un-typed) 我的xml类型列中有以下xml(xml本身未键入)
<wi>
<w wid="16">
<p>28</p>
<p>72</p>
<p>125</p>
</w>
<w wid="19">
<p>89</p>
</w>
<w wid="20">
<p>11</p>
</w>
<w wid="21">
<p>74</p>
</w>
</wi>
Can't figure out how to produce two-columns using SQL+XQuery: 无法弄清楚如何使用SQL + XQuery生成两列:
p w
--- ---
11 20
28 16
72 16
74 21
89 19
125 16
Use: 采用:
declare @x xml = '<wi>
<w wid="16">
<p>28</p>
<p>72</p>
<p>125</p>
</w>
<w wid="19">
<p>89</p>
</w>
<w wid="20">
<p>11</p>
</w>
<w wid="21">
<p>74</p>
</w>
</wi>'
select *
from
(
select t.c.value('.', 'int') p
, t.c.value('../@wid', 'int') w
from @x.nodes('//p') t(c)
)t
order by p, w
Or another approach using cross apply
: 或使用cross apply
另一种方法:
select *
from
(
select a.b.value('.', 'int') p
, t.c.value('@wid', 'int') w
from @x.nodes('//w') t(c)
cross apply t.c.nodes('p') a(b)
)t
order by p, w
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.