用于T-SQL中XML导出的数据透视

时间:2016-01-25 21:39:04

标签: sql sql-server xml tsql pivot

我的数据库中有一个表格如下:

@attribute       element       data
--------------------------------------
attribute1       element1      data1
attribute2       element2      data2

我想输出如下所示的XML:

<element1 attribute="attribute1">data1</element1>
<element2 attribute="attribute2">data2</element2>

大约有30个属性 元素名称,抱歉,它们有点动态。我不是所有在SQL中练习或知识渊博的人。有一个简单的解决方案吗?除此之外,是否有“最佳实践”解决方案?如果我使用动态SQL,我应该采取什么措施来捕获/防止潜在的错误?

2 个答案:

答案 0 :(得分:2)

并没有真正形成有效的xml,因为您未在示例输出中指定根,但您可以执行此类操作。

SELECT  CAST('<' + element + ' attribute="' + attribute + '">' + data + '</' + element + '>' AS XML)
FROM    Table1
FOR     XML PATH('')

答案 1 :(得分:0)

通过在任何查询结尾添加FOR XML RAW,将生成接近您要查找的XML。此外,您可以通过在末尾添加元素名称来指定元素名称,例如FOR XML RAW ('ELEMENT_PARENT')或根名称FOR XML RAW ('ELEMENT_PARENT'), ROOT ('Example')

至于动态元素(或XML格式之前的属性)和错误捕获,你可以使用sql提供的任何标准技巧包。

FWIW,我发现这个网站遍历了几个不同的例子,从SQL脚本输出XML数据的方式越来越复杂。

https://www.simple-talk.com/sql/learn-sql-server/using-the-for-xml-clause-to-return-query-results-as-xml/