使用SQL Server 2012.我有一个包含组标识符和XML小片段的表。这是一个示例:
CREATE TABLE temp (
GroupId [int] NOT NULL,
RawXml [xml] NULL
)
INSERT INTO temp VALUES (1, '<Item><Criteria Type="State" Values="CA"/><Criteria Type="State" Values="TX"/><Criteria Type="State" Values="FL"/></Item>')
INSERT INTO temp VALUES (1, '<Item><Criteria Type="Manager" Values="Tim"/></Item>')
INSERT INTO temp VALUES (2, '<Item><Criteria Type="Name" Values="Walters"/></Item>')
INSERT INTO temp VALUES (2, '<Item><Criteria Type="Manager" Values="Tim"/></Item>')
我想要做的是通过GroupId将XML片段组合在一起以形成更大的XML文档,因此最终结果的结构如下:
<Parent>
<Group GroupId="1">
<Item>
<Criteria Type="State" Values="CA"/>
<Criteria Type="State" Values="TX"/>
<Criteria Type="State" Values="FL"/>
</Item>
<Item>
<Criteria Type="Manager" Values="Tim"/>
</Item>
</Group>
<Group GroupId="2">
<Item>
<Criteria Type="Name" Values="Walters"/>
</Item>
<Item>
<Criteria Type="Manager" Values="Tim"/>
</Item>
</Group>
</Parent>
我担心唯一的解决方案是首先使用某种类型的string concatenation method连接XML列的内容,然后使用FOR XML select语句,但我觉得这对我的应用程序来说太慢了。我错过了什么,有一种简单的方法可以用这种方式对xml数据进行分组,或者是字符串连接是我唯一的选择。