0

次の表とコンテンツがあります。

CREATE TABLE [dbo].[MyTable](
        [PID] [int] NOT NULL,
        [CID] [int] NOT NULL
    )

INSERT INTO MyTable values (17344,17345)
INSERT INTO MyTable values (17344,17346)
INSERT INTO MyTable values (17272,17273)
INSERT INTO MyTable values (17272,17255)
INSERT INTO MyTable values (17272,17260)
INSERT INTO MyTable values (17272,17274)
INSERT INTO MyTable values (17272,17252)

これから、次の XML レイアウトを作成する必要があります。

<Item code="17344">
    <BOMs>
        <BOM code="17344">
          <BOMLine type="17345"/>
          <BOMLine type="17346"/>
        </BOM>
    </BOMs>
</Item>
<Item code="17272">
    <BOMs>
        <BOM code="17272">
            <BOMLine type="17273"/>
            <BOMLine type="17255"/>
            <BOMLine type="17260"/>
            <BOMLine type="17274"/>
            <BOMLine type="17252"/>
        </BOM>
    </BOMs>
</Item>

次のステートメントでこれを達成しようとしていますが、行と重複が多すぎます。

DECLARE @test XML
SELECT @test =
    (SELECT PID '@code',
        (SELECT PID as '@code', 
            (SELECT CID as '@type'
                FROM MyTable
                FOR XML PATH('BOMLine'), TYPE)
            FROM MyTable GROUP BY PID
            FOR XML PATH('BOM'), TYPE, ROOT('BOMs'))
        FROM MyTable
        FOR XML PATH('Item'), TYPE)
select @test

誰でもこれで私を助けることができますか?ちなみに、SQL Server 2008 を使用しています。それは大歓迎です。

よろしく、 ウェス

4

1 に答える 1