Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:统计父级中的XML子级_Sql_Sql Server_Xml - Fatal编程技术网

SQL Server:统计父级中的XML子级

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

您好,我一直在寻找一种更新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.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