您不想更改整个功能,而只需更改XQuery中的路径。如您所知,这是不可能的。
但是:您似乎在不同的结构中找到相同的数据。至少你似乎知道,你会发现一个名为节点
ID,
Name以及
Value节点下面
SomeNode…
因此,这种方法可能以完全不同的方式解决了您的问题…至少在您给出的两个示例中,它都可以起作用…
SELECt p.*FROM( SELECt Nd.value('.','int') AS SomeNode ,Deeper.value('local-name(.)','nvarchar(max)') AS NodeName ,Deeper.value('.','nvarchar(max)') AS Nodevalue FROM @XML_In.nodes('//SomeNode') AS Sm(Nd) OUTER APPLY Nd.nodes('parent::*/*[local-name(.)!="SomeNode"]/*') AS TwoLevels(Deeper)) AS tblPIVOT( MIN(Nodevalue) FOR NodeName IN(ID,Name,Value)) AS p
在此解决方案中,您的第一个工作示例显示了如何
SomeNode用作变量…
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)