我正在尝试从 SQL 表中选择值作为具有特定格式的 XML 表。
使用下表...
SELECT x.*
INTO #t
FROM (VALUES (1, 'John', 'Doe')) x(Id, FirstName, LastName)
SELECT *
FROM #t
DROP TABLE #t
我需要一个看起来像这样的 XML 输出......
<Table>
<Row>
<Column>Id</Column>
<Column>FirstName</Column>
<Column>LastName</Column>
</Row>
<Row>
<Column>1</Column>
<Column>John</Column>
<Column>Doe</Column>
</Row>
</Table>
我能够使用 UNION 和 XML PATH 获得与此匹配的输出...
SELECT t1.*
INTO #t
FROM (VALUES (1, 'John', 'Doe')) t1(Id, FirstName, LastName);
WITH t2(xmlTable) AS (
SELECT t3.Id 'Column'
,''
,t3.FirstName 'Column'
,''
,t3.LastName 'Column'
FROM (
SELECT *
FROM (VALUES ('Id', 'FirstName', 'LastName')) t4(Id, FirstName, LastName)
UNION ALL
SELECT CONVERT(varchar(15), #t.Id)
,CONVERT(varchar(15), #t.FirstName)
,CONVERT(varchar(15), #t.LastName)
FROM #t) t3
FOR XML PATH ('Row'), ROOT('Table'))
SELECT t2.xmlTable
FROM t2
DROP TABLE #t
但这似乎非常麻烦。有没有更优雅的解决方案?具体来说,我可以不使用 UNION 来做到这一点,也许只使用 XML PATH?