我有一张下面结构的表格。
Declare @YourTable Table ([ColA] int,[ColB] xml)
Insert Into @YourTable Values
(123,'<XMLData><ID>1</ID></XMLData>')
,(456,'<XMLData><ID>2</ID></XMLData>')
,(333,'<XMLData><ID>3</ID></XMLData>')
XML具有相同的结构。 现在我需要使用SSIS或SQL将ColumnB中的所有XML连接成单个XML。预期结果应为
<XMLData>
<ID>1</ID>
<ID>2</ID>
<ID>3</ID>
</XMLData>
非常感谢任何帮助。
干杯!
答案 0 :(得分:2)
示例强>
Declare @YourTable Table ([ColA] int,[ColB] xml)
Insert Into @YourTable Values
(123,'<XMLData><ID>1</ID></XMLData>')
,(456,'<XMLData><ID>2</ID></XMLData>')
,(333,'<XMLData><ID>3</ID></XMLData>')
Select [*] = [ColB].query('XMLData/*')
From @YourTable A
For XML Path(''), ROOT('XMLData')
<强>返回强>
<XMLData>
<ID>1</ID>
<ID>2</ID>
<ID>3</ID>
</XMLData>
答案 1 :(得分:0)
假设您的表名是具有以下数据模型的TBL:
COLUMN_A | COLUMN_B
123 | XML1
456 | XML2
333 | XML3
以下用于SQL Server
SELECT COLUMN_1, STRING_AGG(COLUMN_B, ', ') WITHIN GROUP (ORDER BY COLUMN_B) AS CONCATENATED_XML
FROM TBL GROUP BY COLUMN_1;
使用以下查询Oracle
SELECT COLUMN_1, LISTAGG(COLUMN_B, ‘’) WITHIN GROUP (ORDER BY COLUMN_B) AS CONCATENATED_XML FROM TBL GROUP BY COLUMN_1;