我正在使用XQuery来执行添加.以下是保存在数据库中的XML结构:
<Events>
<Event>
<id>1</id>
<code>1001</code>
<Amount>50,1</Amount>
</Event>
<Event>
<id>1</id>
<code>1002</code>
<Amount>5,5</Amount>
</Event>
<Event>
<id>1</id>
<code>1001</code>
<Amount>50,1</Amount>
</Event>
<Event>
<id>1</id>
<code>1002</code>
<Amount>5,5</Amount>
</Event>
</Events>
Run Code Online (Sandbox Code Playgroud)
我想通过使用XQuery获得低于输出:具有相同代码的金额之和.请注意,是..我需要更换,由.和执行运算.
<Total>
<1001> 100,2 </1001>
<1002> 11,0 </1002>
</Total>
Run Code Online (Sandbox Code Playgroud)
如果您的XQuery处理器支持XQuery 3.0,请使用该group by语句.
<Total>
{
for $i in //Event
let $code := $i/code
group by $code
return element {"code"} { attribute {"id"} {$code}, sum($i/Amount)}
}
</Total>
Run Code Online (Sandbox Code Playgroud)
在您的问题中,XML片段有两个不同之处:我将浮点分隔符更改为点(这是必需的,当然您也可以使用一些XQuery字符串操作来执行此操作)并且元素名称可能不仅仅包含数字,看一下元素命名规则.我决定在我的示例中将代码作为id-attribute返回.