【发布时间】:2014-01-21 15:16:10
【问题描述】:
我正在尝试将以下 XML 生成为表格的一列:
<root>
<Address1>
<Addressline1>Test Road</Addressline1>
<Addressline2>Test Street</Addressline2>
<Addressline3>Test Town</Addressline3>
<Addressline4>Test State</Addressline4>
<Postcode>Test Postcode</Postcode>
</Address1>
<Address2>
<Addressline1>Test Road</Addressline1>
<Addressline2>Test Street</Addressline2>
<Addressline3>Test Town</Addressline3>
<Addressline4>Test State</Addressline4>
<Postcode>Test Postcode</Postcode>
</Address2>
</root>
下面的 SQL 差不多了:
select (1Addressline1,
1Addressline2,
1Addressline3,
1Addressline4,
1Postcode for xml path('Address'), root('Addresses')) AS Address1,
(2Addressline1,
2Addressline2,
2Addressline3,
2Addressline4,
2Postcode for xml path('Address'), root('Addresses')) AS Address2,
ColumnA
ColumnB
ColumnC
From Addresses
生成以下 XML:
<root>
<Address1>
<Addressline1>Test Road</Addressline1>
<Addressline2>Test Street</Addressline2>
<Addressline3>Test Town</Addressline3>
<Addressline4>Test State</Addressline4>
<Postcode>Test Postcode</Postcode>
</Address1>
</root>,
<root>
<Address2>
<Addressline1>Test Road</Addressline1>
<Addressline2>Test Street</Addressline2>
<Addressline3>Test Town</Addressline3>
<Addressline4>Test State</Addressline4>
<Postcode>Test Postcode</Postcode>
</Address2>
</root>,
ColumnA,
ColumnB,
ColumnC
生成两个单独的 XML 列是不正确的。我现在需要像上面那样在根节点下组合地址 1 和地址 2,但无法解决或找到正确的语法。
编辑:正如我所建议的,我已将我的代码修改为此给出了一些语法错误:
SELECT ColumnA,
ColumnB,
ColumnC,
(
select
(
(
select RTRIM(Address1Line1),
RTRIM(Address1Line2),
RTRIM(Address1Line3),
RTRIM(Address1Line4),
RTRIM(Address1Line5)
for xml path('Address'), type
),
(
select RTRIM(Address2Line1),
RTRIM(Address2Line2),
RTRIM(Address2Line3),
RTRIM(Address2Line4),
RTRIM(Address2Line5)
for xml path('Address'), type
)
) FOR XML PATH(''), root('Addresses'),type
) AS Addresses
FROM TableA
【问题讨论】:
标签: sql sql-server for-xml-path