将XML转换为SQL Server矩形结果集

问题描述 投票:0回答:1

如何将显示在XML结果集中的XML切碎?

<xml>
    <registernumber>12</registernumber>
    <language name="English">
        <RegularTests>
            <RegularTest Id="05-division">
                <group>05-Counts</group>
            </RegularTest>
            <RegularTest Id="08-division">
                <group>08-Counts</group>
            </RegularTest>
            <RegularTest Id="09-division">
                <group>09-Counts</group>
            </RegularTest>
        </RegularTests>
        <groups>
            <group key="05-Counts">
                <word Dated="03/20/2014">A</word>
                <word Dated="03/20/2014">B</word>
            </group>
            <group key="08-Counts">
                <word Dated="03/20/2014">C</word>
                <word Dated="03/20/2014">D</word>
            </group>
            <group key="09-Counts">
                <word Dated="03/20/2014">E</word>
                <word Dated="03/20/2014">F</word>
                <word Dated="03/20/2014">G</word>
            </group>
        </groups>
    </language>
    <language name="Japanese">
        <RegularTests>
            <RegularTest Id="05-division">
                <group>05-Counts</group>
            </RegularTest>
            <RegularTest Id="08-division">
                <group>08-Counts</group>
            </RegularTest>
            <RegularTest Id="09-division">
                <group>09-Counts</group>
            </RegularTest>
        </RegularTests>
        <groups>
            <group key="05-Counts">
                <word Dated="03/20/2014">か</word>
            </group>
            <group key="08-Counts">
                <word Dated="03/20/2014">か</word>
                <word Dated="03/20/2014">か</word>
                <word Dated="03/20/2014">か</word>
            </group>
            <group key="09-Counts">
                <word Dated="03/20/2014">か</word>
                <word Dated="03/20/2014">か</word>
            </group>
        </groups>
    </language>
    <language name="Spanish">
        <RegularTests>
            <RegularTest Id="05-division">
                <group>05-Counts</group>
            </RegularTest>
            <RegularTest Id="08-division">
                <group>08-Counts</group>
            </RegularTest>
            <RegularTest Id="09-division">
                <group>09-Counts</group>
            </RegularTest>
        </RegularTests>
        <groups>
            <group key="05-Counts">
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>           
            </group>
            <group key="08-Counts">
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>           
            </group>
            <group key="09-Counts">
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>           
                <word Dated="09/19/2013">Д</word>                           
            </group>
        </groups>
    </language>
</xml>

由于XML标记是嵌套的,所以我无法通过SQL Server查询获得需要输出的执行结果(即,每个属性值都需要带到相应的父标记下)。

这是SQL Server选择输出需要如何的一个示例:

enter image description here

谢谢

sql-server xml tsql xquery
1个回答
0
投票
请尝试以下解决方案。它使用多个CROSS APPLY子句模拟关系,并使用UNION ALL子句将不同的XML片段成形为所需的输出。

SQL
© www.soinside.com 2019 - 2024. All rights reserved.