次の XML を検討してください。
<Parent ID="p">
<Child ID="1">10</Child >
<Child ID="2">20</Child >
<Child ID="3">0</Child >
</Parent >
ノード内のすべての子の値を.for上記の例で合計したいクエリを返したいParent
ID="p"
30
どうすればこれを行うことができますか?
次の XML を検討してください。
<Parent ID="p">
<Child ID="1">10</Child >
<Child ID="2">20</Child >
<Child ID="3">0</Child >
</Parent >
ノード内のすべての子の値を.for上記の例で合計したいクエリを返したいParent
ID="p"
30
どうすればこれを行うことができますか?
select @xml.value('sum(/Parent[@ID = "p"]/Child)', 'float') as Sum
の使用は、それが存在しないことをfloat
防ぎます。次に、この結果を にキャストできます。Parent
ID
int
これを試して :-
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でのデモ