使用XQuery求和

Pur*_*uru 2 xquery xquery-sql

我正在使用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)

Jen*_*rat 6

如果您的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返回.