我有以下XML。
<Root>
<Child1>
<SubChild1>some value</PartNumber>
</Child1>
<Child2>some data</Child2>
<Child3>some data</Child3>
<Child4>some data</Child4>
<Child2>some data</Child2>
<Child3>some data</Child3>
<Child5>some data</Child5>
</Root>我想删除重复的节点,并以下面的格式返回XML。
<Root>
<Child1>
<SubChild1>some value</PartNumber>
</Child1>
<Child2>some data</Child2>
<Child3>some data</Child3>
<Child4>some data</Child4>
<Child5>some data</Child5>
</Root>我尝试了下面的SQL查询,但它不工作。
SELECT @myXMLData.query('
for $x in distinct-values(//*)[1]
return
(//*)[1]
')我也尝试过distinct-values,但它返回值(没有包含节点属性)。
SELECT @XML.query('<Root>{ distinct-values(//*) }</Root>')有什么需要帮忙的吗?
发布于 2021-02-09 16:09:34
declare @x xml = N'<Root>
<Child1>
<SubChild1>some value</SubChild1>
</Child1>
<Child2>some data</Child2>
<Child3>some data</Child3>
<Child4>some data</Child4>
<Child2>some data</Child2>
<Child3>some data</Child3>
<Child5>some data</Child5>
</Root>';
select node as '*'
from
(
select x.e.query('.') as node, row_number() over(partition by x.e.value('local-name(.)', 'nvarchar(100)') order by x.e) as nodenum
from @x.nodes('Root/*') as x(e)
) as src
where nodenum = 1
for xml path(''), root('Root');https://stackoverflow.com/questions/66114744
复制相似问题