SQL Server:统计父级中的XML子级
您好,我一直在寻找一种更新sql中生成的xml的方法,以添加子节点的计数,并使用sql将计数添加到父节点 我试过各种各样的方法SQL Server:统计父级中的XML子级,sql,sql-server,xml,Sql,Sql Server,Xml,您好,我一直在寻找一种更新sql中生成的xml的方法,以添加子节点的计数,并使用sql将计数添加到父节点 我试过各种各样的方法 SET @xml.modify ( 'insert attribute TrCount {count(/XML/Acs/Act/Trs/Tr)} into (./XML/Acts/Act/Trs)' )) 12 2013-04-11 干杯试试这样的方法,假设每个动作只包含一个Trs: declare @count int = @xml
SET @xml.modify
(
'insert attribute TrCount {count(/XML/Acs/Act/Trs/Tr)} into (./XML/Acts/Act/Trs)'
))
12
2013-04-11
干杯试试这样的方法,假设每个
动作
只包含一个Trs
:
declare @count int = @xml.value('count(/XML/Acts/Act)', 'int'),
@counter int = 1;
while (@counter <= @count)
begin
SET @xml.modify ('insert attribute TrCount {count(/XML/Acts/Act[sql:variable("@counter")]/Trs/Tr)} into (/XML/Acts/Act[sql:variable("@counter")]/Trs)[1]');
set @counter += 1;
end
declare@count int=@xml.value('count(/xml/Acts/Act)'int'),
@计数器int=1;
而(@计数器
<Act RowID="1>
<Trs Trcount="1">
<Tr RowID="1" />
</Trs>
</Act>
<Act RowID="2">
<Trs Trcount="2">
<Tr RowID="1" />
<Tr RowID="2" />
</Trs>
</Act>
<Act RowID="3">
<Trs Trcount="1">
<Tr RowID="1"/>
</Trs>
</Act>
<Act RowID="4">
<Trs Trcount="7">
<Tr RowID="1" />
<Tr RowID="2" />
<Tr RowID="3" />
<Tr RowID="4" />
<Tr RowID="5" />
<Tr RowID="6" />
<Tr RowID="7" />
</Trs>
declare @count int = @xml.value('count(/XML/Acts/Act)', 'int'),
@counter int = 1;
while (@counter <= @count)
begin
SET @xml.modify ('insert attribute TrCount {count(/XML/Acts/Act[sql:variable("@counter")]/Trs/Tr)} into (/XML/Acts/Act[sql:variable("@counter")]/Trs)[1]');
set @counter += 1;
end