问题描述
我需要在具有这种格式的SQL Server中构建XML。您可以看到第一行有两个XMLNAMESPACES,但位置旁边还有第三个。
<arrayofstuff xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypes">
<stuff>
<Description>blue</Description>
<Location xmlns:d3p1="http://schemas.datacontract.org/2004/07/ACME.Infrastructure.CodeValues">
<d3p1:Code>64</d3p1:Code>
<d3p1:Description>Balloons</d3p1:Description>
</Location>
</stuff>
</arrayofstuff>
这是我到目前为止的内容,并提供了一些示例数据。看起来在第一个查询中有一个嵌套的XML查询,但是我似乎无法第二次使用WITH语句,因为它必须是批处理中的第一个命令,因此我不确定该怎么做
IF EXISTS(SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('myTable'))
BEGIN;
DROP TABLE [myTable];
END;
GO
CREATE TABLE [myTable] (
[myTableID] INTEGER NOT NULL IDENTITY(1,1),[Description] VARCHAR(MAX) NULL,[sourceID] INTEGER NOT NULL,[Location] VARCHAR(255) NULL,[Code] VARCHAR(255) NULL,[Location_Desc] VARCHAR(255) NULL,PRIMARY KEY ([myTableID])
);
GO
INSERT INTO myTable([SourceID],[Description],[Location],[Code],[Location_Desc])
VALUES(3,'yellow','Oxford County','64','list'),(3,'blue','Fraser Lake',(2,'red','San Marcello Pistoiese','green','Gembloux','Yeongcheon','list')
GO
WITH XMLNAMESPACES (default 'http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypess','http://www.w3.org/2001/XMLSchema-instance' as i )
SELECT
[sourceID],cast(stuff((
SELECT
[Description] as [Description],[Code] AS [Location/Code],[Location_Desc] AS [Location/Description]
FROM [myTable] mnbm
where mnbm.[sourceID] = p.[sourceID]
for xml path('stuff'),root ('arrayofstuff')
),1,'') as xml) as Ids
from [myTable] p
group by
p.[sourceID]
这是我当前输出的结果:
<arrayofstuff xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypess">
<stuff>
<Description>commodo</Description>
<Location>San Marcello Pistoiese</Location>
</stuff>
<stuff>
<Description>ipsum</Description>
<Location>Gembloux</Location>
</stuff>
<stuff>
<Description>ipsum</Description>
<Location>Yeongcheon</Location>
</stuff>
</arrayofstuff>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)