组XML列数据

时间:2016-08-24 01:54:16

标签: sql-server xml tsql sql-server-2012

使用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数据进行分组,或者是字符串连接是我唯一的选择。

0 个答案:

没有答案