【发布时间】:2020-07-24 10:00:22
【问题描述】:
我需要使用 t-SQL 将查询结果转换为 xml 片段。 我的表/查询如下所示:
[Col1] [Col2] [Col3] qty
A group1 mod1 5
A group1 mod2 7
A group1 NULL 12
A group2 mod3 8
A group2 mod4 5
A group2 NULL 13
A NULL NULL 25
所需的 XML 输出应如下所示
<A qty="25">
<group1 qty="12">
<mod1 qty="5"/>
<mod2 qty="7"/>
</group1>
<group2 qty="13">
<mod3 qty="8"/>
<mod4 qty="5"/>
</group2>
</A>
有没有一种方法可以在不旋转表和使用动态 sql 的情况下实现这一点,这会非常混乱
【问题讨论】:
-
尝试xml路径。谷歌 xml sql 服务器
-
这和你的问题有点相似。 stackoverflow.com/a/36768199/1068246
-
@MuzafferGALATA。感谢您的链接。这解决了嵌套问题。我也在尝试找到一种将列值作为元素名称的方法。但这似乎不可能
-
@MuzafferGALATA 这与您链接到的问题相去甚远,因为非常重要的一点:该链接提供了一个解决方案,其中列的名称是节点的名称(这是 FOR XML有效),但在这种情况下,OP 希望以 VALUE 成为节点名称的方式构建 XML。这是一个巨大的不同。乍一看,这里似乎需要一个支点/反支点或循环。
-
你是对的@RonenAriely。
标签: sql-server xml tsql