Sql server Xquery中的xml.value()仅返回1条记录

Sql server Xquery中的xml.value()仅返回1条记录,sql-server,xquery-sql,Sql Server,Xquery Sql,我在xml文件中有多个abc节点,但它返回第一行的值,正如我们指定的[1],如果我写入[2],它将返回第二行 我想返回所有abc循环中元素的所有值 使用的查询: Insert Into @temp(aa,bb) SELECT y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') , y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') FROM @x.nodes('(a1/b1/c1)

我在xml文件中有多个abc节点,但它返回第一行的值,正如我们指定的[1],如果我写入[2],它将返回第二行

我想返回所有abc循环中元素的所有值

使用的查询:

Insert Into @temp(aa,bb)
SELECT 
y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') ,
y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') 
FROM @x.nodes('(a1/b1/c1)') AS y(b)
下面的查询给出了所需的结果,但我无法使用该查询,因为我需要从同一查询中的位置a1/b1/c1访问其他字段

Insert Into @temp(aa,bb)
SELECT 
y.b.value('(Segment/Element)[1]', 'NVARCHAR(50)') ,
y.b.value('(Segment/Element)[1]', 'NVARCHAR(50)') 
FROM @x.nodes('(a1/b1/c1/abc)') AS y(b)
在y.b上使用交叉应用来获取abc的行

select z.b.value('(Segment/Element)[1]', 'nvarchar(50)') ,
       z.b.value('(Segment/Element)[1]', 'nvarchar(50)') 
from @x.nodes('(a1/b1/c1)') as y(b)
  cross apply y.b.nodes('abc') as z(b);