返回重复列的嵌套XML
|
我有一个看起来像这样的表,适当地放置了代码(尤其是XML结构和查询)
Class Subclass Information Details
Classx subclassx Info1 otherinfo1
Classx subclassx Info2
Classx subclassy info3
Classyy subclassyyy info3
例如,我需要返回用Class = \'classx \'过滤的行,返回:
<Class Name=\"Classx\">
<Subclass subclassName =\"subclassx\">
<Info>Info1</Info>
<Info>Info2</Info>
</Subclass>
<Subclass subclassName =\"subclassy\">
<Info>Info3</Info>
</Subclass>
</Class>
(要么)
<Class Name=\"Classx\">
<Subclass>subclassx
<Info>Info1</Info>
<Info>Info2</Info>
</Subclass>
<Subclass>subclassy
<Info>Info3</Info>
</Subclass>
</Class>
将\'Subclass \'嵌套在\'Class \'元素内,并将\'Info \'嵌套在\'Subclass \'元素内的东西。
尝试了一些查询:
DECLARE @classFilter nvarchar(15);
SELECT @classFilter = \'Classx\'
SELECT @classFilter as \'@Class\',
(SELECT r1.subClass as \'SubClass\',
(SELECT DISTINCT r1.Info as \'Info\'
FROM @results as r2
WHERE r2.Class= @classFilter and r1.Subclass = r2.Subclass
FOR XML PATH(\'Information\'), TYPE
)
FROM @results r1
GROUP BY r1.Class, r1.SubClass, r1.Info
HAVING r1.Class= @classFilter
FOR XML PATH(\'Subclasses\'), TYPE)
FOR XML PATH(\'Class\'), TYPE;
给出:
<Class Class=\"Classx\">
<Subclasses>
<SubClass>subclassx</SubClass>
<Information>
<Info>Info1</Info>
</Information>
</Subclasses>
<Subclasses>
<SubClass>subclassx</SubClass>
<Information>
<Info>Info2</Info>
</Details>
</Subclasses>
<Subclasses>
<SubClass>subclassy</SubClass>
<Information>
<Info>Info3</Info>
</Information>
</Subclasses>
</Class>
我能找到的最接近的是
SELECT @classfilter as \'@Name\', --or r1.Class
(SELECT r1.Subclass as \'@Subclass\',
(SELECT DISTINCT r1.Information as \'Information\'
FROM @results as r2
WHERE r2.Class = @classFilter and r1.Subclass = r2.Subclass
)
FROM @results r1
GROUP BY r1.Class, r1.Subclass, r1.Information
HAVING r1.Class= @classFilter
FOR XML PATH(\'Subclasses\'), TYPE)
FOR XML PATH(\'Class\'), TYPE;
给出:
<Class Name=\"classx\">
<Subclasses subclass=\"subclassx\">Info1</Subclasses>
<Subclasses subclass=\"subclassx\">Info2</Subclasses>
<Subclasses subclass=\"subclassy\">Info3</Subclasses>
</Class>
想知道我缺少什么!
没有找到相关结果
已邀请:
1 个回复
为陡土