5

次の XML を検討してください。

<Parent ID="p">
    <Child ID="1">10</Child > 
    <Child ID="2">20</Child > 
    <Child ID="3">0</Child > 
</Parent > 

ノード内のすべての子の値を.for上記の例で合計したいクエリを返したいParentID="p"30

どうすればこれを行うことができますか?

4

4 に答える 4

9
select @xml.value('sum(/Parent[@ID = "p"]/Child)', 'float') as Sum

の使用は、それが存在しないことをfloat防ぎます。次に、この結果を にキャストできます。ParentIDint

于 2013-04-22T10:35:58.043 に答える
4

これを試して :-

 Declare @xml xml 
set @xml='<Parent ID="p">
         <Child ID="1">10</Child > 
         <Child ID="2">20</Child > 
         <Child ID="3">0</Child > 
          </Parent >'

 Select @xml.value('sum(/Parent/Child)','int') as Sum

結果 :30

または、特定の合計が必要な場合はParent ID、以下のクエリを試してください

 Select @xml.value('sum(/Parent/Child)','int') AS SumVal
 where @xml.exist('/Parent[@ID="p"]') = 1;

SQL FIDDLEでのデモ

于 2013-04-22T10:16:05.340 に答える