Pau*_*gle 2 xml sql sql-server
我有一个看起来像这样的表:
CREATE TABLE CustomerXmlData
(CustomerId int,
CustomerData xml)
Run Code Online (Sandbox Code Playgroud)
CustomerId链接到主customer表,CustomerData是一个xml文档,如下所示
<Person>
<Product>
<Name>ABC</Name>
<Value>500</Value>
</Product>
<Product>
<Name>XYZ</Name>
<Value>600</Value>
</Product>
</Person>
Run Code Online (Sandbox Code Playgroud)
有几十万个这样的行.在伪代码,我想要做的是"求其平均值Value
的Product
地方Name
='XYZ’".
我知道如何根据元素属性或基于文档中具有唯一性的父元素来获取值,但在这种情况下这些都不是任何用途.我找不到任何可以让我找到Name
我想要的东西,然后获得下一个兄弟的价值.
我可以使用FOR XML
并创建一个边表,但是我是否必须使用游标遍历它?我希望有一个更有效的解决方案.
我找不到任何能让我找到我想要的名字的东西,然后得到下一个兄弟的价值.
declare @Name varchar(10)
set @Name = 'XYZ'
select N.value('.', 'int') as Value
from CustomerXmlData
cross apply CustomerData.nodes
('/Person/Product[Name = sql:variable("@Name")]/Value') as T(N)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1491 次 |
最近记录: |