我正在尝试将以下 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 列。我现在需要像上面那样在根节点下组合 Address1 和 Address 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